组中行最大时的设置值 - Python Pandas

Set value when row is maximum in group by - Python Pandas

我正在尝试创建一个列 (is_max),如果 B 列是 A 列的一组值中的最大值,则该列为 1,否则为 0。

示例:

[输入]

A B 
1 2
2 3
1 4
2 5

[输出]

A B is_max
1 2   0 
2 5   0
1 4   1
2 3   0

我在尝试什么:

df['is_max'] = 0
df.loc[df.reset_index().groupby('A')['B'].idxmax(),'is_max'] = 1

既然你没有说明,我假设 A 是你的组

df['is_max']=(df['B']==df.groupby('A')['B'].transform('max')).astype(int)

df1.groupby('A')['B'].apply(lambda x: x==x.max()).astype(int)

通过删除 reset_index

来修复您的代码
df['is_max'] = 0
df.loc[df.groupby('A')['B'].idxmax(),'is_max'] = 1
df
Out[39]: 
   A  B  is_max
0  1  2       0
1  2  3       0
2  1  4       1
3  2  5       1