比较标记数据的最大值



假定我的数据集

Name  Num Label
0   K    10    0
1   K    21    0 
2   K    31    0
3   K    41    1
4   Y    9     0
5   Y    19    0
6   Y    14    1
7   B    33    0
8   B    43    0    
9   B    77    1
10  B    89    1

每个名称都有数值数据,标签为 0/1。

我想将标签 0 的最大值与最大值 1 进行比较,并仅提取最大值为 1 的最大值。

如果我应用我所说的逻辑,它们是K和B (K - 最大标签 0 : 31<最大标签 _x0031_=" _x0034_1=" B=" _x002D_=" 最大标签=" _x0030_=" _x0034_3=">

结果是我想要的

Name  Num Label
0   K    10    0
1   K    21    0 
2   K    31    0
3   K    41    1
4   B    33    0
5   B    43    0    
6   B    77    1
7   B    89    1

感谢您的阅读

获取具有聚合max的过滤行的最大值,然后使用Series.map进行原始DataFrame,并按每组的最大值进行比较GroupBy.transform

s = df[df['Label'].eq(1)].groupby('Name')['Num'].max()
df = df[df['Name'].map(s).eq(df.groupby('Name')['Num'].transform('max'))]
print (df)
0     K   10      0
1     K   21      0
2     K   31      0
3     K   41      1
7     B   33      0
8     B   43      0
9     B   77      1
10    B   89      1

最新更新