基于其他列内容在pandas df中创建新列时出现np.where问题

时间:2019-04-06 16:44:42

标签: python pandas numpy dataframe

我有以下名为Band_data的df:

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 个答案:

答案 0 :(得分:2)

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