使用Agg查找每天最常使用的用户

2024-07-02 10:50:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些推特数据

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对整个数据帧执行此操作吗?为了找到每天最频繁的tweeter,我可以做一些类似r.agg( lambda x: x.username.value_counts().reset_index().ix[0,0])的事情吗?还是有更好的方法来做我想做的事?你知道吗


Tags: 数据indextimevalueusernameaggresetix
2条回答

另一种解决方案是采取每次和concat解决方案的模式

r = pd.concat([df[df.time == i].mode() for i in df.time.unique()])

可选的你可以做的索引(根据你的喜好)

r = r.reset_index(drop=True)

或者

r.set_index('time', inplace = True)

我想你可以用^{}by ^{}来聚合^{}和最后一个^{}

print (df.username.groupby(df.time.dt.date).apply(lambda x: x.mode()))

样品:

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'])
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

相关问题 更多 >