有没有办法打破带有类别的pandas列,以使用类别名称作为列名分隔true或false列

时间:2018-04-16 12:25:39

标签: python pandas

我有一个包含以下列的数据框:

df = pd.DataFrame({"A": [1,2,1,2,2,2,0,1,0]})

我希望:

df2 = pd.DataFrame({"0": [0,0,0,0,0,0,1,0,1],"1": [1,0,1,0,0,0,0,1,0],"2": [0,1,0,1,1,1,0,0,0]}) 

使用oneliner是否有一种优雅的方式。

注意

  • 我可以使用df ['0'] = df ['A']。apply(find_zeros)
  • 我不介意决赛中是否包含'A'。

2 个答案:

答案 0 :(得分:2)

In [50]: df.A.astype(str).str.get_dummies()
Out[50]:
   0  1  2
0  0  1  0
1  0  0  1
2  0  1  0
3  0  0  1
4  0  0  1
5  0  0  1
6  1  0  0
7  0  1  0
8  1  0  0

答案 1 :(得分:2)

使用get_dummies

df2 = pd.get_dummies(df.A)
print (df2)
   0  1  2
0  0  1  0
1  0  0  1
2  0  1  0
3  0  0  1
4  0  0  1
5  0  0  1
6  1  0  0
7  0  1  0
8  1  0  0