如何分组和计数日期每个月与熊猫页?

  • 本文关键字:熊猫 日期 python pandas
  • 更新时间 :
  • 英文 :


我有一个可以在页面中看到用户反应的CSV。我需要计算每个月有多少帖子是由一个页面。(我在这个数据集中有用户,但现在无关紧要。)

page,postingdate
page1,2021-01-10 08:02:05
page1,2021-01-10 08:02:05// 01 month 1 post 2 reactions
page1,2021-01-10 09:10:10
page1,2021-01-10 09:10:10
page1,2021-01-10 09:10:10
page1,2021-01-10 09:10:10 //01 month 2 post 3 reactions
page1,2021-02-20 08:02:05 
page1,2021-02-20 08:02:05
page1,2021-02-20 08:02:05 //02 month 1 post
page1,2021-03-21 09:02:05
page1,2021-03-22 10:02:05
page1,2021-03-23 11:02:05
page1,2021-03-23 11:02:05 //03 month 3 posts 4 reactions
page2,2021-01-15 08:02:05
page2,2021-01-15 08:02:05
My expected output:
page1 2021-01-31 00:00:00+00:00       2 
2021-02-30 00:00:00+00:00       1
2021-03-31 00:00:00+00:00       3
page2 2021-01-31 00:00:00+00:00       2

所以我需要按每个页面分组,计算不同的发布时间,并按月分解每个页面。

我有一个示例pandas脚本,它按所有页面分组,并计算所有帖子:

df.groupby(by='page', as_index=False).agg({'postingdate': pd.Series.nunique})

我对这个脚本的问题是,它没有按月计算。

添加按月分组的Grouper:

df = (df.groupby(['page', pd.Grouper(freq='M', key='postingdate')], as_index=False)
.agg({'postingdate': pd.Series.nunique}))
print (df)
page  postingdate
0  page1            2
1  page1            1
2  page1            3
3  page2            1

如果还需要dates:

df = (df.groupby(['page', pd.Grouper(freq='M', key='postingdate')])['postingdate']
.nunique()
.reset_index(name='val'))
print (df)
page postingdate  val
0  page1  2021-01-31    2
1  page1  2021-02-28    1
2  page1  2021-03-31    3
3  page2  2021-01-31    1

最新更新