首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Agg每天查找最频繁的用户

使用Agg每天查找最频繁的用户
EN

Stack Overflow用户
提问于 2016-05-30 17:33:38
回答 2查看 75关注 0票数 1

我有一些推特数据

代码语言:javascript
运行
复制
username    time
RamiAlLolah 2016-03-11
grezz10     2016-02-19
DawlaWitness11  2016-04-08
murasil1    2016-04-29
mustaklash  2016-02-19

我希望能够确定谁是每天最频繁的推文者。我可以根据天数对数据进行分组,然后使用df.username.value_counts().reset_index().ix[0,0]获取当天最频繁的tweeter。

我可以使用agg对整个数据帧执行此操作吗?为了找到每天最频繁的推文,我能做一些像r.agg( lambda x: x.username.value_counts().reset_index().ix[0,0])这样的事情吗?还是有更好的方法来做我想做的事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-30 17:58:01

我认为您可以使用groupby通过dt.date聚合mode和最后一个reset_index

代码语言:javascript
运行
复制
print (df.username.groupby(df.time.dt.date).apply(lambda x: x.mode()))

示例:

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({'time': {0: pd.Timestamp('2016-03-11 00:00:00'), 1: pd.Timestamp('2016-02-19 00:00:00'), 2: pd.Timestamp('2016-02-19 00:00:00'), 3: pd.Timestamp('2016-02-19 00:00:00'), 4: pd.Timestamp('2016-04-08 00:00:00'), 5: pd.Timestamp('2016-04-08 00:00:00'), 6: pd.Timestamp('2016-04-29 00:00:00'), 7: pd.Timestamp('2016-02-19 00:00:00')}, 
                   'username': {0: 'RamiAlLolah', 1: 'grezz10', 2: 'grezz10', 3: 'grezz10', 4: 'DawlaWitness11', 5: 'DawlaWitness11', 6: 'murasil1', 7: 'mustaklash'}},
                    columns = ['username','time'])
代码语言:javascript
运行
复制
print (df)
         username       time
0     RamiAlLolah 2016-03-11
1         grezz10 2016-02-19
2         grezz10 2016-02-19
3         grezz10 2016-02-19
4  DawlaWitness11 2016-04-08
5  DawlaWitness11 2016-04-08
6        murasil1 2016-04-29
7      mustaklash 2016-02-19

print (df.username.groupby(df.time.dt.date)
                  .apply(lambda x: x.mode())
                  .reset_index(drop=True, level=1)
                  .reset_index())

         time        username
0  2016-02-19         grezz10
1  2016-04-08  DawlaWitness11
票数 0
EN

Stack Overflow用户

发布于 2016-05-30 20:35:43

另一种解决方案是采取每次的模式,并将解决方案连接起来。

代码语言:javascript
运行
复制
r = pd.concat([df[df.time == i].mode() for i in df.time.unique()])

可选的索引,您可以这样做(因为您更喜欢您的结果)

代码语言:javascript
运行
复制
r = r.reset_index(drop=True)

代码语言:javascript
运行
复制
r.set_index('time', inplace = True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37531059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档