我想要做的是,如果对于给定的行,该列不是最大的,则用“ 0”替换该列的值。相反,如果对于给定的行,该列为最大,则将列值替换为“ 1”。
我的数据如下:
data = {
"A": [1, 2, 3],
"B": [3, 5, 1],
"Max": ["B", "B", "A"]
}
data_df = pd.DataFrame(data)
print(data_df)
A B Max
0 1 3 B
1 2 5 B
2 3 1 A
但是我希望它看起来像
A B Max
0 0 1 B
1 0 1 B
2 1 0 A
答案 0 :(得分:2)
您可以这样做:
for col in ['A','B']:
data_df[col] = data_df['Max'].eq(col).astype(int)
或者,您可以这样做:
data_df[['A', 'B']] = (pd.get_dummies(data_df['Max'])
.reindex(['A','B'], axis=1, fill_value=0)
)