Python 按一列分组,然后按日期时间分组使用。descripe()[已解决]
我有一个pandas DataFramePython 按一列分组,然后按日期时间分组使用。descripe()[已解决],python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个pandas DataFramedf,它基本上是一个用户在给定日期时间发出的tweet列表,看起来是这样的: created_at user_screen_name 3 2020-10-29 00:00:11 user_name_one 3 2020-10-29 00:00:11 user_name_one 3 2020-10-30 00:00:11 user_name_one 3 2020-10-31 00:00:11 user_
df
,它基本上是一个用户在给定日期时间发出的tweet列表,看起来是这样的:
created_at user_screen_name
3 2020-10-29 00:00:11 user_name_one
3 2020-10-29 00:00:11 user_name_one
3 2020-10-30 00:00:11 user_name_one
3 2020-10-31 00:00:11 user_name_one
5 2020-10-29 00:00:16 user_name_two
13 2020-10-30 00:00:38 user_name_two
13 2020-10-30 00:00:38 user_name_two
14 2020-10-30 00:00:39 user_name_three
17 2020-10-30 00:00:45 user_name_three
我想做的是首先根据user\u screen\u name
列对推文进行分组,然后根据用户当天的推文次数对每个user\u screen\u name
的推文进行进一步分组(因此,在本例中,user\u name\u one自29、30和31日发布以来将有三个组),然后最后调用.descripe()
查询每个用户每天的推文数量,并将该信息附加到df
上。所以最后,它看起来是这样的:
user_screen_name count mean std ...
3 user_name_one 4 1 x ...
5 user_name_two 3 1.5 y ...
14 user_name_three 2 2 z ...
我相信我可以用df.groupby
和df.Grouper(freq=“D”)
来做这件事,但我不知道如何把它们放在一起,因为我对熊猫还是相当陌生的。我试过了
combined.groupby(['user_screen_name', pd.Grouper('created_at', freq='D')])
但它告诉我参数freq
有多个值,这让我很困惑。任何帮助都将不胜感激
编辑:
经过一些修补,我找到了一个很好的单衬里。这相当慢(在一个有255000条tweet的数据集上完成大约5分钟),但我认为没有更快的方法,因为我相信descripe()
是计算时间如此之长的原因:
combined = combined.groupby([pd.Grouper(key='user_screen_name'), pd.Grouper(key='created_at', freq='D')]).size().groupby(level=0).describe()