如何将日期拆分的Dataframe重塑为时间序列并批量处理分组数据
批量处理分组DataFrame并合并为时间序列
不需要手动逐个命名分组,用Pandas的groupby.apply配合pd.concat就能搞定,步骤如下:
1. 写一个分组处理函数
针对每个年月分组的DataFrame,完成转置、日期整合的操作:
import pandas as pd def process_single_group(group_df): # 提取当前分组的年月(每个分组里的Month&Year值都一致,取第一个即可) month_year_str = group_df['Month&Year'].iloc[0] # 转置数据,让"日"索引变成列 transposed = group_df.T # 删掉Month&Year行,只保留rate、pressure、cut的参数数据 transposed = transposed.drop('Month&Year') # 把列名(日)和年月拼接成完整日期,转成datetime格式 transposed.columns = pd.to_datetime(f"{transposed.columns} {month_year_str}", format="%d %b %Y") # 再次转置,让日期成为行索引、参数成为列 return transposed.T
2. 批量处理并合并
用groupby按Month&Year分组,调用上面的函数处理每个分组,最后合并所有结果:
# 假设你的原始DataFrame名为raw_df # sort=False保证分组顺序和原数据中年月出现的顺序一致,不会自动按年月排序 grouped = raw_df.groupby('Month&Year', sort=False) # 批量处理所有分组 processed_groups = grouped.apply(process_single_group) # 合并并清理索引 final_time_series = processed_groups.reset_index(level=0, drop=True).sort_index()
注意点
- 如果你的
Month&Year格式不是Jan 2024这种“月缩写+年”,要调整pd.to_datetime里的format参数,比如格式是2024-01的话,改成"%d %Y-%m" sort_index()是可选操作,如果原分组的日期已经按时间顺序排列,可以省略
内容的提问来源于stack exchange,提问作者Lala
相关产品推荐
相关产品推荐

