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

具有以下数据框:


                     UserID TweetLanguage

2014-08-25 21:00:00  001        english

2014-08-27 21:04:00  001        arabic

2014-08-29 22:07:00  001        espanish

2014-08-25 22:09:00  002        english

2014-08-26 22:09:00  002        espanish

2014-08-25 22:09:00  003        english 

我需要绘制每周使用一种以上语言发布的用户数量。


例如,在上面的数据框中,用户 001 和 002 用不止一种语言发了推文。所以在情节中,这周的对应值应该是 2。其他周的故事相同。


翻过高山走不出你
浏览 274回答 3
3回答

明月笑刀无情

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

炎炎设计

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 的值:每周使用的语言数..

RISEBY

使用 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python