Pandas按月份和年份分组(日期为datetime64[ns])并按计数汇总

5 人关注

我有一个数据框架,是我在pandas中创建的,按日期分组,按骑行次数汇总。

      date   rides
0   2019-01-01  247279
1   2019-01-02  585996
2   2019-01-03  660631
3   2019-01-04  662011
4   2019-01-05  440848
..         ...     ...
451 2020-03-27  218499
452 2020-03-28  143305
453 2020-03-29  110833
454 2020-03-30  207743
455 2020-03-31  199623
[456 rows x 2 columns]

My date column is in datetime64[ns].

date     datetime64[ns]
rides             int64
dtype: object

现在我想创建另一个数据框架,按月份和年份分组(我有2019年和2020年的数据),并按骑行情况进行总结。

理想的输出。

Year Month   Rides
2019 January 2000000
2020 March   1000000
    
python
pandas
pandas-groupby
python-datetime
Anakin Skywalker
Anakin Skywalker
发布于 2020-05-19
2 个回答
Ben.T
Ben.T
发布于 2020-05-19
已采纳
0 人赞同

你可以 groupby 并获得 dt.年 dt.month_name 从列日期。

print (df.groupby([df['date'].dt.year.rename('year'), 
                   df['date'].dt.month_name().rename('month')])
         ['rides'].sum().reset_index())
   year    month    rides
0  2019  January  2596765
1  2020    March   880003
    
完美!国王!非常感谢您!
我将接受你的答案,因为你是第一个:)。再次感谢!
ALollz
ALollz
发布于 2020-05-19
0 人赞同

替换代码0】也支持 to_period 的转换,所以我们可以按月度周期对所有内容进行分组。

df.groupby(df.date.dt.to_period('M')).agg('sum')
#           rides
#date            
#2019-01  2596765
#2020-03   880003