Python 如何在时间戳上正确使用group by?
我有一个全年每分钟的timeseries数据Python 如何在时间戳上正确使用group by?,python,pandas,datetime,time-series,data-analysis,Python,Pandas,Datetime,Time Series,Data Analysis,我有一个全年每分钟的timeseries数据 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
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
我想结合时间戳,这样我可以得到每个月的综合降雨率,也就是说,我想使用group by根据日期将它们结合起来,并将它们与轴一起绘制为时间戳,以便进一步分析。
如何使用熊猫执行此操作
我用过-
每日组=降雨量组降雨量组指数日期
每日分组。获取分组pd.Timestamp2010,1,1[“降雨率”]。求和,但当然我无法绘制它们,因为它们的形状不同。使用pd.Grouper和freq=M:
您还可以将列时间戳转换为只包含月份的列。但解决方案@Henry Yik看起来很棒Rainsion_df['month_year']=Rainsion_df['timestamp'].dt.to_period'M''OP希望获得每个月的总降雨量,而不是分配一个新列。当然,那么需要groupby。您能解释一下代码吗,我是初学者@HenryYik@random_user没有什么特别的-您的索引已经是datetime,因此您可以使用pd.gropper按月对它们进行分组,然后计算每组的降雨量。
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