我有一个Pandas表,其编码如下:
id var1 var2 var3
1 1 3 4
2 2 5
3 1 2
希望将其转换为这样的二进制文件
id x1 x2 x3 x4 x5
1 1 0 1 1 0
2 0 1 0 0 1
3 1 1 0 0 0
因此可以有效地映射每个变量的位置。
答案 0 :(得分:2)
使用get_dummies
In [506]: (pd.get_dummies(df.filter(like='var').stack())
.sum(level=0).rename(columns='x{:.0f}'.format))
Out[506]:
x1 x2 x3 x4 x5
0 1 0 1 1 0
1 0 1 0 0 1
2 1 1 0 0 0