In [1]: dfOut[1]: Sp Mt Value count0 MM1 S1 a 31 MM1 S1 n 22 MM1 S3 cb 53 MM2 S3 mk 84 MM2 S4 bg 105 MM2 S4 dgd 16 MM4 S2 rd 27 MM4 S2 cb 28 MM4 S2 uyi 7In [2]: df.groupby(['Mt'], sort=False)['count'].max()Out[2]:MtS1 3S3 8S4 10S2 7Name: count
要获取原始DF的索引,你可以执行以下操作:
In [3]: idx = df.groupby(['Mt'])['count'].transform(max) == df['count']In [4]: df[idx]Out[4]: Sp Mt Value count0 MM1 S1 a 33 MM2 S3 mk 84 MM2 S4 bg 108 MM4 S2 uyi 7
请注意,如果每个组有多个最大值,则将全部返回。
更新资料
在OP所要求的情况下,这真是万劫不复:
In [5]: df['count_max'] = df.groupby(['Mt'])['count'].transform(max)In [6]: dfOut[6]: Sp Mt Value count count_max0 MM1 S1 a 3 31 MM1 S1 n 2 32 MM1 S3 cb 5 83 MM2 S3 mk 8 84 MM2 S4 bg 10 105 MM2 S4 dgd 1 106 MM4 S2 rd 2 77 MM4 S2 cb 2 78 MM4 S2 uyi 7 7



