首页 > 解决方案 > 如何在时间戳上正确使用 group-by?

问题描述

我每分钟都有一整年的时间序列数据。

timestamp               day hour min rainfall_rate           
2010-01-01 00:00:00     1   0   0       x
2010-01-01 00:01:00     1   0   1       x
2010-01-01 00:02:00     1   0   2       x
2010-01-01 00:03:00     1   0   3       x
2010-01-01 00:04:00     1   0   4       x
...                            ...
2010-12-31 23:55:00     365 23  55  
2010-12-31 23:56:00     365 23  56  
2010-12-31 23:57:00     365 23  57  
2010-12-31 23:58:00     365 23  58  
2010-12-31 23:59:00     365 23  59 

我想组合时间戳,这样我就可以得到rainfall_rate每个月的组合,即我想group-by根据日期将它们组合起来,并将它们与轴一起绘制为时间戳以供进一步分析。如何使用熊猫执行此操作?

我用了 -

daily_groups = rainfall_df.groupby(rainfall_df.index.date)然后

daily_groups.get_group(pd.Timestamp(2010,1,1))['rainfall_rate'].sum()但我当然无法绘制它们,因为它们的形状不同。

标签: pythonpandasdatetimetime-seriesdata-analysis

解决方案


pd.Grouper与 一起使用freq="M"

print (df.groupby(pd.Grouper(freq="M"))["rainfall_rate"].count())


#
    timestamp
2010-01-31    5
2010-02-28    0
2010-03-31    0
2010-04-30    0
2010-05-31    0
2010-06-30    0
2010-07-31    0
2010-08-31    0
2010-09-30    0
2010-10-31    0
2010-11-30    0
2010-12-31    0

推荐阅读