python - 使用 pandas.get_dummies 进行一次热编码时保留列顺序
问题描述
在 Pandas 数据框中一次性编码分类特征的最佳/最 Pythonic 方法是什么,同时保留从中提取类别(新列名)的列的原始顺序?
例如,如果我的数据框 (df0) 中有三列:["Col_continuous"、"Col_categorical"、"Labels"],并且我使用
df1hot = pd.get_dummies(df0, columns = ["Col_categorical"])
新数据框的“标签”列之后出现了新创建的列。我想要“Col_continuous”和“Labels”之间的新列。
为了稳健性,我希望在处理具有在其余列中任意排序的分类列的数据帧时保留顺序例如,对于 ["Cont1", "Cat1", "Cont2", "Cont3", "Cat2", "标签”],我希望“Cat1”产生的新列位于“Cont1”和“Cont2”之间。假设我已经有一个变量,比如categoricalCols,它是分类特征名称的列表。
编辑 1:更改df1hot = pd.get_dummies(df0, columns = ["Col_continuous"])
为df1hot = pd.get_dummies(df0, columns = ["Col_categorical"])
感谢 Juan C 的评论。
编辑 2:添加了以“为了稳健性,...”开头的段落
解决方案
IIUC 我会选择这样的东西:
df.columns=['Col_continuous',*[i for i in df.columns if 'Col_categorical' in i], 'Labels']
这告诉 pandas 将由创建的每一列放在get_dummies
中间df.columns
推荐阅读
- docker - 如何从 EKS 工作节点中删除未使用的图像?
- java - 如何使用 aws java sdk 将文件从 S3 存储桶从一个区域复制到另一个区域?
- android - 省电功能可防止 WorkManager 被执行
- python - Pandas 用基于另一列的第一个非 nan 值替换 nan
- javascript - JavaScript 中的 getter 有什么用?
- ruby-on-rails - 在单击元素时从 phantomJS 移动到 rspec 功能规范的 headless chrome 时出错
- flutter - Flutter:无法构建android apk
- python - 如何使用 Cloud Composer 将大数据从 Postgres 导出到 S3?
- python - 遍历 pandas 数据帧时出现内存错误。如何解决这个问题?
- android - 如何使用 btsnoop_hci.log 查看 Android 蓝牙日志?