【发布时间】:2016-07-10 12:49:50
【问题描述】:
我有一个熊猫数据框:
id city
000.tushar@gmail.com Bangalore
00078r@gmail.com Mumbai
0007ayan@gmail.com Jamshedpur
0007ayan@gmail.com Jamshedpur
000.tushar@gmail.com Bangalore
00078r@gmail.com Mumbai
00078r@gmail.com Vijayawada
00078r@gmail.com Vijayawada
00078r@gmail.com Vijayawada
我想找到 id-wise 最多出现的城市名称。因此,对于给定的 ID,我可以看出 - 这是他最喜欢的城市:
id city
000.tushar@gmail.com Bangalore
00078r@gmail.com Vijayawada
0007ayan@gmail.com Jamshedpur
使用 groupby id 和 city 给出:
id city count
0 000.tushar@gmail.com Bangalore 2
1 00078r@gmail.com Mumbai 2
2 00078r@gmail.com Vijayawada 3
3 0007ayan@gmail.com Jamshedpur 2
如何进行下一步?我相信一些 group-by 申请会做到这一点,但不知道究竟会做什么。所以请建议。
如果某个 id 的两个或三个城市的计数相同,我可以返回其中任何一个城市。
【问题讨论】:
-
另一个选项是
pd.crosstab(df['city'], df['id']).idxmax(axis=0),但如果 id 和 city 有许多唯一值,crosstab可能会生成一个非常大的框架。 -
对于我提到的数据框,这个交叉表 sn-p 只给了我 000.tushar@gmail.com Vijayawada 记录。我认为它是在整体 id 集上找到最大城市计数。不是 id 明智的最大城市计数。
-
pandas recommended 方法是
groupby('id').apply(your_custom_function),根据我的回答
标签: python pandas group-by max aggregate