将属于最大组的行保留在熊猫中

时间:2018-12-17 10:29:33

标签: python pandas dataframe group-by pandas-groupby

我有一个这样的DataFrame:

df = pd.DataFrame({'id':['pt1','px1','t95','sx1','dc4', 'px5'],
'feature':['f7','f7', 'f7','f8','f8', 's1'],
'score':['2','3.3','4','8','4.9', '6']})  

我要:
 1-计算“功能”列中每个组的组大小
(结果为f7:3; f8:2; s1:1)
 2-找到最大的组大小(即f7:3)
 3-保留属于该组的行的最大大小(f7),并删除其余行

最终的pd.DataFrame将是:

id feature score
pt1   f7      2
px1   f7     3.3
t95   f7      4

谢谢

2 个答案:

答案 0 :(得分:2)

GroupBytranformcount一起使用,以及附加的过滤步骤:

v = df.groupby('feature').feature.transform('count')
df[v.eq(v.max())]

    id feature score
0  pt1      f7     2
1  px1      f7   3.3
2  t95      f7     4

答案 1 :(得分:0)

如果您实际上不需要组大小,则可以不用groupby来简化操作。

找到最频繁的组,然后按该组进行过滤:

df.loc[df['feature'] == df['feature'].mode()[0]]

  feature   id score
0      f7  pt1     2
1      f7  px1   3.3
2      f7  t95     4

顺便说一句,如果您想获取组的大小,就可以这样做

df.groupby('feature')['feature'].count()