组中行最大时的设置值 - 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
我正在尝试创建一个列 (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