首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用pandas.get_dummies进行一次热编码时保留列顺序

在使用pandas.get_dummies进行一次热编码时保留列顺序
EN

Stack Overflow用户
提问于 2019-04-04 15:51:22
回答 2查看 1.7K关注 0票数 4

在Pandas数据帧中使用哪一种最佳/最Pythonic的方法来实现一种热编码分类特性,同时保持从其中提取类别(新列名)的列的原始顺序?

例如,如果数据框架(Df0)中有三列:"Col_continuous“、"Col_categorical”、"Labels",则使用

df1hot = pd.get_dummies(df0, columns = ["Col_categorical"])

新的数据框架中新创建的列出现在“标签”列之后。我希望新列在"Col_continuous“和”标签“之间。

为了健壮性,我希望在处理数据帧时保留顺序,在其他列中任意排序,例如对于"Cont1“、"Cat1”、"Cont2“、"Cont3”、"Cat2“、”标签“,我希望"Cat1”产生的新列介于"Cont1“和"Cont2”之间。假设我已经有了一个变量,比如categoricalCols,它是一个分类特性的名称列表。

编辑1:由于Juan的评论,df1hot = pd.get_dummies(df0, columns = ["Col_continuous"])改为df1hot = pd.get_dummies(df0, columns = ["Col_categorical"])

编辑2:增加了以“用于健壮性,.”开头的段落

EN

回答 2

Stack Overflow用户

发布于 2019-04-04 15:57:15

我会做这样的事情:

代码语言:javascript
复制
df.columns=['Col_continuous',*[i for i in df.columns if 'Col_categorical' in i], 'Labels']

这告诉熊猫把get_dummies创建的每一个专栏都放在df.columns的中间。

票数 2
EN

Stack Overflow用户

发布于 2020-04-25 12:17:55

我不知道它是否足够Pythonic,但是下面的代码是我找到的解决更普遍问题的唯一方法:

代码语言:javascript
复制
df0['Col_categorical'] = pd.Categorical(df0['Col_categorical'])
dfDummies = pd.get_dummies(df0['Col_categorical'])
column_position = df0.columns.get_loc('Col_categorical')
df1 = df.iloc[:, :column_position]
df2 = df.iloc[:, column_position+1:]
df1hot = pd.concat([df1, dfDummies, df2], axis=1)

我得到分类列的列位置,然后将原始的dataframe分割成两个dataframe,并在它们之间插入一个热编码的列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55520223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档