我有一个这样的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
谢谢
答案 0 :(得分:2)
将GroupBy
和tranform
与count
一起使用,以及附加的过滤步骤:
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()