Pandas get_dummies创建一个hot with separator =' '和字符级别分离

时间:2018-03-22 04:03:08

标签: python pandas one-hot-encoding

df = pd.DataFrame(["c", "b", "a p", NaN, "ap"])
df[0].str.get_dummies(' ')

上面的代码打印出这样的东西。

       a   p    b    c ap 
0      0   0    0    1  0
1      0   0    1    0  0 
2      1   1    0    0  0
3      0   0    0    0  0
4      0   0    0    0  1  

所需的输出如下:

       a   p    b    c  
0      0   0    0    1 
1      0   0    1    0  
2      1   1    0    0 
3      0   0    0    0 
4      1   1    0    0  

我确信这有点棘手。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

IIUC str.get_dummies

df[0].str.get_dummies(sep=' ')
Out[745]: 
   air  bus  car  plane
0    0    0    1      0
1    0    1    0      0
2    1    0    0      1

pd.get_dummies(pd.DataFrame(df[0].str.split().tolist()).stack()).sum(level=0)
Out[754]: 
   air  bus  car  plane
0    0    0    1      0
1    0    1    0      0
2    1    0    0      1

答案 1 :(得分:1)

您可以使用str.get_dummies

df[0].str.get_dummies(' ')


    air bus car plane
0   0   0   1   0
1   0   1   0   0
2   1   0   0   1