先说数据结构:
文件名,后续会提取第一个“_”前面的数字,这是代表站点。
文件具体数据:
正式代码:
import os
import pandas as pd
# 定义文件夹路径
folder_path = r"F:\XXX"路径位置,文件夹下包括多个CSV文件
# 获取文件夹中所有CSV文件的文件名
file_names = os.listdir(folder_path)
# 创建一个空DataFrame来存储所有站点数据的逐月平均
all_monthly_avg = pd.DataFrame()
# 循环处理每个CSV文件
for file_name in file_names:
if file_name.endswith('.csv'): # 确保只处理CSV文件
# 读取CSV文件
file_path = os.path.join(folder_path, file_name)
df = pd.read_csv(file_path)
# 将日期列转换为日期时间类型
df['date'] = pd.to_datetime(df['date'])
# 提取年份和月份
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
# 根据年份和月份分组,并计算每个月的平均值
monthly_avg = df.groupby(['year', 'month']).mean().reset_index()
# 获取文件名中的编号并添加到数据中
file_number = file_name.split('_')[0]#这里就是提取number
monthly_avg['file_number'] = file_number
# 将结果添加到all_monthly_avg中
all_monthly_avg = pd.concat([all_monthly_avg, monthly_avg])
# 将结果保存到新的Excel文件
output_file_path = r"F:\Part-time\yanyilin\all_monthly_avg_data.xlsx"
all_monthly_avg.to_excel(output_file_path, index=False)
合成数据展示。最后的number是站点。
该数据是协助师弟合成的,原始数据是txt,他已经转成csv,如有需要转换代码,私信。