我有一个熊猫数据框:
id city
[email protected] Bangalore
[email protected] Mumbai
[email protected] Jamshedpur
[email protected] Jamshedpur
[email protected] Bangalore
[email protected] Mumbai
[email protected] Vijayawada
[email protected] Vijayawada
[email protected] Vijayawada
我想以id-wise查找出现的最大城市名称。因此,对于给定的ID,我可以说-这是他最喜欢的城市:
id city
[email protected] Bangalore
[email protected] Vijayawada
[email protected] Jamshedpur
使用groupby id和city可以得到:
id city count
0 [email protected] Bangalore 2
1 [email protected] Mumbai 2
2 [email protected] Vijayawada 3
3 [email protected] Jamshedpur 2
如何进一步进行?我相信一些按组申请会做到这一点,但不知道到底是什么会成功。因此,请提出建议。
如果两个或三个城市的ID数相同,则可以返回其中任何一个城市。
您可以groupby
使用size
和尝试两次idxmax
。输出是元组列表(因为MultiIndex
),因此请使用apply
:
df = df.groupby(['id','city']).size().groupby(level=0).idxmax()
.apply(lambda x: x[1]).reset_index(name='city')
另一个解决方案:
s = df.groupby(['id','city']).size()
df = s.loc[s.groupby(level=0).idxmax()].reset_index().drop(0,axis=1)
或者:
df = df.groupby(['id'])['city'].apply(lambda x: x.value_counts().index[0]).reset_index()
print (df)
id city
0 [email protected] Bangalore
1 [email protected] Vijayawada
2 [email protected] Jamshedpur
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句