我有一个可以在页面中看到用户反应的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
如果还需要date
s:
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