我在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


总而言之,我不希望将行合并为二进制列。
非常感谢!

最佳答案

reindexget_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

08-20 02:24