Python 如何在不合并行级别的情况下使用Pandas进行热编码

Python 如何在不合并行级别的情况下使用Pandas进行热编码,python,pandas,categorization,Python,Pandas,Categorization,我在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

我在
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\u dummies()获取以下内容:

总之,我不希望将行合并到二进制列中。
非常感谢

使用
reindex
get\u假人

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

仅仅发布一些代码并没有太大帮助。你能解释一下你的代码吗?这样其他人就可以从你的答案中理解和学习,而不是仅仅从网上复制和粘贴一些代码。事实上,如果我增加行数和产品数,这并不能解决问题。将有具有重复名称的列标签。您的解决方案似乎删除了前缀,但行和列的组合将保持不变。谢谢您的回答!这就是我要找的。
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
df = pd.get_dummies(df, prefix='', prefix_sep='') # remove prefix from dummy column names and underscore
df = df.sort_index(axis=1) # order data by column names