熊猫:如果不是最大值,则将其替换为0

时间:2019-07-11 16:40:07

标签: python python-3.x pandas

我想要做的是,如果对于给定的行,该列不是最大的,则用“ 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

1 个答案:

答案 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)
                      )