python - 多列上的 Pandas get_dummies
问题描述
我有一个包含多个列的数据集,我希望对其进行一次热编码。但是,我不想对它们中的每一个都进行编码,因为所述列与所述项目相关。我想要的是一组使用所有列的虚拟变量。请参阅我的代码以获得更好的解释。
假设我的数据框如下所示:
In [103]: dum = pd.DataFrame({'ch1': ['A', 'C', 'A'], 'ch2': ['B', 'G', 'F'], 'ch3': ['C', 'D', 'E']})
In [104]: dum
Out[104]:
ch1 ch2 ch3
0 A B C
1 C G D
2 A F E
如果我执行
pd.get_dummies(dum)
输出将是
ch1_A ch1_C ch2_B ch2_F ch2_G ch3_C ch3_D ch3_E
0 1 0 1 0 0 1 0 0
1 0 1 0 0 1 0 1 0
2 1 0 0 1 0 0 0 1
但是,我想获得的是这样的:
A B C D E F G
1 1 1 0 0 0 0
0 0 1 1 0 0 1
1 0 0 0 1 1 0
我不希望有多个表示编码的列,例如ch1_A
and ch1_C
,我只希望在列, ,中的任何值出现时有一组( A
, B
, 等等)具有值。1
ch1
ch2
ch3
为了澄清,在我的原始数据集中,单行不会多次包含相同的值(A,B,C ...);它只会出现在其中一列上。
解决方案
使用stack
和str.get_dummies
dum.stack().str.get_dummies().sum(level=0)
Out[938]:
A B C D E F G
0 1 1 1 0 0 0 0
1 0 0 1 1 0 0 1
2 1 0 0 0 1 1 0
推荐阅读
- reactjs - 如何将相同的商品添加到购物车但只增加数量
- r - 在r中使用循环函数来计算每天的常数值?
- ios - 使用 URL 在 Swift 中显示电话号码的所有系统选项
- javascript - 返回类实例的 getter 方法的最佳方法
- spring-boot - 弹性搜索结果与搜索键不匹配
- javascript - 我应该在哪里存储从 GET 请求中检索到的 JSON,以便我可以在 v-for 指令中访问它?
- amazon-web-services - Flask 应用程序未部署在 AWS 弹性 beantalk 上
- python - TypeError:不能混合 str 和非 str 参数
- android - 如何在 webview 中加载 .rtf 文件?
- google-cloud-platform - Cloud Build Node.js 版本多久更新一次?