python - 如何在不组合行级别的情况下使用 Pandas 进行热编码

标签 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   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

关于python - 如何在不组合行级别的情况下使用 Pandas 进行热编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52124751/

相关文章:

python - 未定义 jsonify - 内部服务器错误

python - 在 Centos7 上从源代码安装 couchbase-python-client

python - 如何根据其他数据框进行过滤

python - 在 pandas 列中取消嵌套数据框

php - 从按两列分组的表中获取所有数据 - mysql、php

python - 重定义对象的方法

python - 在没有扩展名的目录中获取文件名 - Python

python - 获取多列并将它们放入与 Pandas 相同的索引中

html - 使用 CSS 显示/隐藏分类元素

database - 根据数据签名对数据进行分类