一、parsivel雨滴譜資料:
二、資料介紹:
總結一下就是,第一行資料是第一個速度對應的全部32個尺度粒子個數,第二行資料是第二個速度對應的全部32個尺度粒子個數。
三、速度、尺度一覽表:
四、先將速度、尺度資料放入原雨滴譜txt資料中,以方便後期計算:
(1)先按時間進行分組
(2)再按行讀取,將每個部分變成列表,放入dataframe裡
(3)最後插入雨滴譜速度尺度檔案
#!usr/bin/env python # -*- coding:utf-8 -*- """ @author: Suyue @file: speedeeinsert.py @time: 2024/04/07 @desc: """ import numpy as np import pandas as pd df1 = pd.read_excel('/尺度速度.xls') file_path = '/NM004-20230627224400-20230627224859-0.txt' # 讀整個txt檔案讀取到單個字串 with open(file_path, 'r', errors='ignore') as file: file_content = file.read() # 按時間戳拆分內容以查詢單獨的部分 # 時間戳的格式為 YYYY-MM-DD HH:MM:SS,因此我們將使用正規表示式根據此模式進行拆分 import re sections = re.split(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\n', file_content) # 如果txt第一個元素為空值(由於拆分),則將其刪除 if not sections[0]: sections.pop(0) # 將每個部分放入DataFrame dataframes = []
# 由於一個列表為速度、尺度中文名,要避開這行所以從第二個列表取值 for section in sections[1:]: # 將字串拆分為幾行,然後按空格拆分每行並轉換為 DataFrame lines = section.strip().split('\n') # print(lines) matrix = [line.split() for line in lines] df = pd.DataFrame(matrix) df.columns = df1['直徑'] df.index = df1['速度'] # 將df放入dataframes中 dataframes.append(df) # print(dataframes) # 顯示每個dataframe形狀以確認 df_shapes = [df.shape for df in dataframes] print(df_shapes)
結果: