雨滴譜資料處理

秋刀鱼CCC發表於2024-04-08

一、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)

結果:

相關文章