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