为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 按多列分组、计数和重新采样

Pandas 按多列分组、计数和重新采样

翻过高山走不出你 2021-07-08 17:11:19
具有以下数据框:                     UserID TweetLanguage2014-08-25 21:00:00  001        english2014-08-27 21:04:00  001        arabic2014-08-29 22:07:00  001        espanish2014-08-25 22:09:00  002        english2014-08-26 22:09:00  002        espanish2014-08-25 22:09:00  003        english 我需要绘制每周使用一种以上语言发布的用户数量。例如,在上面的数据框中,用户 001 和 002 用不止一种语言发了推文。所以在情节中,这周的对应值应该是 2。其他周的故事相同。
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

df.groupby([pd.Grouper(freq='W'), 'User ID'])['TweetLanguage'].nunique().unstack().plot()


查看完整回答
反对 回复 2021-07-27
?
炎炎设计

TA贡献1808条经验 获得超4个赞

df.groupby(pd.Grouper(key='datetime', freq='W')).apply(lambda df:\

df.groupby('UserID').apply(lambda df: len(df.TweetLanguage.value_counts())))

这是一个班轮,将在一周内分开一周并获得语言数量


df.groupby('UserID').apply(lambda df: len(df.TweetLanguage.value_counts()))

这将返回一个带有索引的系列:用户 ID 的值:每周使用的语言数..


查看完整回答
反对 回复 2021-07-27
?
RISEBY

TA贡献1856条经验 获得超5个赞

使用 2 groupbys。第一个查找每周以一种以上语言发布的用户,第二个计算每周有多少。


(df.groupby([df.index.year.rename('year'), df.index.week.rename('week'), 'UserID']).TweetLanguage.nunique() > 1).groupby(level=[0,1]).sum()


#year  week

#2014  35      2.0

#Name: TweetLanguage, dtype: float64


查看完整回答
反对 回复 2021-07-27
  • 3 回答
  • 0 关注
  • 273 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号