如何在Pandas DataFrame中按月份拆分时间序列并计算月度均值
问题描述
我有一个包含多年小时级数据的Pandas DataFrame,Timestamp为索引,数据示例如下:
Timestamp Spd Pres 2013-06-13 00:00:00 9.630 650.4 2013-06-13 01:00:00 9.309 650.4 2013-06-13 02:00:00 8.421 650.4
希望将数据按月份拆分,计算每个月份的平均值以构建平均代表性年份,请问有没有无需通过循环遍历每月小时数来拆分DataFrame的好方法?
解决方案
可以利用Pandas的索引时间属性结合分组聚合实现,无需手动循环。优化后的代码如下:
import pandas as pd # 直接从Timestamp索引提取月份和年份,无需额外apply操作 df['Month'] = df.index.month df['Year'] = df.index.year # 按月份和年份分组计算均值 monthly_yearly_mean = df.groupby(['Month', 'Year']).mean() print(monthly_yearly_mean)
说明
- 原代码中通过
apply提取月份和年份的方式可简化,直接使用df.index.month和df.index.year即可获取对应数值,更高效简洁。 groupby(['Month', 'Year'])会将数据按「月份-年份」的组合分组,调用mean()就能得到每个月的小时数据平均值。
内容的提问来源于stack exchange,提问作者Shawn
相关产品推荐
相关产品推荐

