基于原始列的 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?

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

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

您可以使用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())