Проблема np.where при создании новых столбцов в pandas df на основе другого содержимого столбца - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть следующий df с именем Band_data:

Band name  Band players
B1         P1        
B2         P1; P2    

Цель состоит в том, чтобы получить этот df в следующей форме:

Band name  P1  P2
B1         1   0     
B2         1   1  

Следующее не работает:

Players = ['P1', 'P2']
for player in Players:
    Band_data[player] = np.where(player in Band_data["Band players"], 1, 0)
Band_data.drop(["Band players"], axis = 1)

потому что он возвращает:

Band name  P1  P2
B1         0   0     
B2         0   0 

Цель, конечно, использовать это для произвольного множества полос в df, это всего лишь небольшой пример.Почему это не правильный способ сделать это и как правильно это реализовать?

1 Ответ

2 голосов
/ 06 апреля 2019

IIUC get_dummies

yourdf=df.set_index('Band name')['Band layers'].str.get_dummies(' ;').reset_index()
yourdf
  Bandname  P1  P2
0       B1   1   0
1       B2   1   1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...