
[英]Pandas: for groupby value_counts, return the row(s) with the maximum count
[英]pandas - select row of maximum value_counts
我有这个简单的数据框df:
User,C,G
111,ar,1
112,es,1
112,es,1
112,es,2
113,ca,2
113,ca,3
113,ca,3
114,en,4
我将其分组为:
result = df.groupby(['User','G'])['C'].value_counts()
获得:
User G
111 1 ar 1
112 1 es 2
2 es 1
113 2 ca 1
3 ca 2
114 4 en 1
然后,我的目标是仅保留每组具有最大value_count
的行,以便出现结果数据框:
User G
111 1 ar 1
112 1 es 2
113 3 ca 2
114 4 en 1
我也发现这个问题与类似的问题有关,但是我不知道如何在我的情况下应用该方法。
您可以首先创建一个掩码,以指示特定行在其组中是否maximum
。
mask = result.groupby(level='User').apply(lambda g: g == g[g.idxmax()])
mask
User G
111 1 ar True
112 1 es True
2 es False
113 2 ca False
3 ca True
114 4 en True
dtype: bool
然后,选择使用此布尔掩码
result[mask]
User G
111 1 ar 1
112 1 es 2
113 3 ca 2
114 4 en 1
dtype: int64
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.