Панды: заменить столбец, если 0, если это не максимум - PullRequest
3 голосов
/ 11 июля 2019

Что я хочу сделать, это заменить значение столбца на «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 Ответ

2 голосов
/ 11 июля 2019

Вы можете сделать:

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)
                      )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...