基于原始列的 dtype 是对象,在数据框中创建多个虚拟变量的最佳方法是啥?

Posted

技术标签:

【中文标题】基于原始列的 dtype 是对象,在数据框中创建多个虚拟变量的最佳方法是啥?【英文标题】:What is the best way to create multiple dummy variables in a data frame based on the original column's dtype being an object?基于原始列的 dtype 是对象,在数据框中创建多个虚拟变量的最佳方法是什么? 【发布时间】:2020-05-02 22:05:31 【问题描述】:

我有一个 DataFrame,其中包含许多列,需要根据它们的 dtype 是一个对象来进行虚拟化。对这些列进行热编码/虚拟化的最快和最有效的方法是什么?列表理解?拉姆达?常规函数和变量赋值?我最终将在线性回归模型中使用一些列。数据集已经非常大了,所以如果我可以在不创建过多列的情况下做到这一点,那将是理想的。这是我正在尝试制作的代码的失败示例:

[pd.get_dummies(col for col in df.columns if df.columns.dtype == 'object')]

【问题讨论】:

【参考方案1】:

您可以使用select_dtypes 发送您想变成假人的子集。你可以concat这个回到原来的DataFrame。

pd.get_dummies(df.select_dtypes('O'))

否则,您将传递整个 DataFrame 并指定列表中的列。您可以使用列表推导,或者只检查哪个 dtypes 是对象。

pd.get_dummies(df, columns=df.dtypes.loc[lambda x: x == 'O'].index.tolist())

【讨论】:

以上是关于基于原始列的 dtype 是对象,在数据框中创建多个虚拟变量的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中创建多选框?

无法设置从 Numpy 数组读取的适当 dtype

将数据框转换为rec数组(将对象转换为字符串)

分配 pandas 数据框列 dtypes

分配 pandas 数据框列 dtypes

如何使用 schema.graphql 在放大数据存储中创建多对多关系