Python时间序列数据透视表:如何按特定月份汇总天气数据
处理时间序列天气数据:每年8-11月的年度求和透视表
没问题,我来一步步帮你实现这个需求~咱们分步骤来,确保每一步都清晰:
1. 先把时间列转成可处理的datetime格式
首先得让Pandas能识别你的时间数据,不管是已经有单独的日期列,还是分成年、月、日三列,都得转成datetime类型:
import pandas as pd # 假设你的数据框是df,包含year、month、day三列 df['date'] = pd.to_datetime(df[['year', 'month', 'day']]) # 如果已经有现成的日期列(比如叫'date'),直接转换就行: # df['date'] = pd.to_datetime(df['date'])
2. 筛选出8月到11月的数据
接下来咱们把每年8、9、10、11月的数据挑出来,用dt.month提取月份后筛选:
# 只保留月份在8-11之间的行 filtered_df = df[df['date'].dt.month.isin([8, 9, 10, 11])]
3. 用透视表做年度求和汇总
现在就可以用pivot_table按年份分组,对需要的天气指标(比如降水量、温度这些)求和了:
# 这里假设你要汇总的是precipitation(降水量)和temperature(温度)列,按需替换成你的列名 annual_summary = filtered_df.pivot_table( index='year', # 按年份作为行索引 values=['precipitation', 'temperature'], # 要汇总的指标列 aggfunc='sum' # 汇总方式选求和 ) # 如果你的年份是从date列里提取的,也可以这么写: # annual_summary = filtered_df.pivot_table( # index=filtered_df['date'].dt.year, # values=['precipitation', 'temperature'], # aggfunc='sum' # )
4. 查看最终结果
运行完上面的代码,直接打印就能看到每年8-11月的各项指标求和结果啦:
print(annual_summary)
小补充
- 如果有多个需要汇总的列,直接在
values里添加就行 - 要是想给汇总后的列名加个前缀(比如
Sum_precipitation),可以用add_prefix:annual_summary = annual_summary.add_prefix('Sum_')
内容的提问来源于stack exchange,提问作者MAR
相关产品推荐
相关产品推荐

