在按['Sp','Mt']
列分组后,如何查找熊猫数据帧中具有计数
列最大值的所有行
示例1:以下数据帧,我通过['Sp','Mt']
对其进行分组:
Sp Mt值计数
0毫米1 S1 a**3**
1mm1s1n2
2毫米1 S3断路器**5**
3 MM2 S3 mk**8**
4 MM2 S4 bg**10**
5 MM2 S4 dgd 1
6毫米4 S2 rd 2
7 MM4 S2 cb 2
8 MM4 S2 uyi**7**
预期输出:获取组间计数最大的结果行,如:
0 MM1 S1 a**3**
2毫米1 S3断路器**5**
3 MM2 S3 mk**8**
4 MM2 S4 bg**10**
8 MM4 S2 uyi**7**
示例2:我根据['Sp','Mt']
对该数据帧进行分组:
Sp Mt值计数
4 MM2 S4 bg 10
5 MM2 S4 dgd 1
6毫米4 S2 rd 2
7 MM4 S2 cb 8
8 MM4 S2 uyi 8
对于上面的示例,我希望得到all每个组中count
等于max的行,例如:
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8
[1]on
:df
Output[1]:
Sp Mt值计数
0毫米1 S1 a 3
1mm1s1n2
2毫米1 S3 cb 5
3平方毫米S3 mk 8
4 MM2 S4 bg 10
5 MM2 S4 dgd 1
6毫米4 S2 rd 2
7 MM4 S2 cb 2
8 MM4 S2 uyi 7
At[2]on:df.groupby(['Mt'],sort=False)['count'].max()
Output[2]:
Mt
S1 3
S3 8
S4 10
S2 7
姓名:伯爵
要获取原始DF的索引,可以执行以下操作:
[3]on
:idx=df.groupby(['Mt'])['count'].transform(max)=df['count']
In[4]:df[idx]
Output[4]:
Sp Mt值计数
0毫米1 S1 a 3
3平方毫米S3 mk 8
4 MM2 S4 bg 10
8 MM4 S2 uyi 7
请注意,如果每个组有多个max值,则将返回所有值
更新
有可能这就是OP的要求:
[5]on
:df['count_max']=df.groupby(['Mt'])['count'].transform(max)
In[6]:df
Output[6]:
Sp Mt值计数\u最大值
0毫米1 S1 a 3 3
1毫米1 S1 n 2 3
2毫米1 S3 cb 5 8
3平方毫米S3 mk 8
4 MM2 S4 bg 10 10
5 MM2 S4 dgd 1 10
6毫米4 S2路27号
7毫米4 S2 cb 2 7
8 MM4 S2 uyi 7