最近需要处理一批气象站点数据,数据是小时尺度的降水数据,时间跨度长,区域范围大,且由于拿到的气象站点是按时间为文件夹进行存储,举例即按照2022020119小时为文件单位存储所有站点该小时的降水量。后面研究需要针对每个站点的历时降水量进行分析,所以编写了小脚本进行数据的结构化处理。
import os
import pandas as pd
# 获取气象站点站号信息
df = pd.read_csv(r'E:\2020121123_prcp.txt', sep='\s+', header=None)
stations_num = df.loc[:,0]
# 读取历史数据文件
path = r'E:\total'
targetFilePath = r'E:\Pre'
files = os.listdir(path) # 获取站点数据的文件信息
files.reverse() #正序/逆序存储
# 通过站号遍历历史站点数据,将数据按照站点进行存储。
for station in stations_num:
stationDir = targetFilePath + "\\" + str(station)
with open(stationDir,'a+', newline='') as f:
for file in files:
sourceDir = path + '\\' + str(file)
try:
date = file.split(sep='_')[0]
sourceFile = pd.read_csv(sourceDir, sep='\s+', header=None)
line = sourceFile[sourceFile[0] == station]
line.insert(loc=0, column='date', value=date)
line.to_csv(f, sep='\t', header=False, index=False, na_rep='')
except:
info = pd.DataFrame([[date,'null','null','null','null','null','null']], columns=list(range(0,7)))
info.to_csv(f, sep='\t', header=False, index=False)
continue