我在 pandas
中创建了一个非常大的数据框,如下所示:
0 1
user
0 product4 product0
1 product3 product1
我想使用诸如pd.get_dummies()
之类的东西,最终的df
将如下所示:
product0 product1 product2 product3 product4
user
0 1 0 0 0 1
1 0 1 0 1 0
而不是从pd.get_dummies()
获取以下内容:
0_product3 0_product4 1_product0 1_product1
user
0 0 1 1 0
1 1 0 0 1
总之,我不希望将行组合成二进制列。 非常感谢!
最佳答案
将reindex
与get_dummies
结合使用
In [539]: dff = pd.get_dummies(df, prefix='', prefix_sep='')
In [540]: s = dff.columns.str[-1].astype(int)
In [541]: cols = 'product' + pd.RangeIndex(s.min(), s.max()+1).astype(str)
In [542]: dff.reindex(columns=cols, fill_value=0)
Out[542]:
product0 product1 product2 product3 product4
user
0 1 0 0 0 1
1 0 1 0 1 0
关于python - 如何在不组合行级别的情况下使用 Pandas 进行热编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124751/