如何在Pandas中构建将分类列的整数转换为数值的循环



我有一个Pandas数据框架,它有几个列,其中一些列包含分类条目。我正在"手动"将这些条目转换为数值。例如,

df['gender'] = pd.Series(df['gender'].factorize()[0])
df['race'] = pd.Series(df['race'].factorize()[0])
df['city'] = pd.Series(df['city'].factorize()[0])
df['state'] = pd.Series(df['state'].factorize()[0])

如果列的数量很大,那么这种方法显然效率低下。有没有一种方法可以通过在所有列上构建一个循环来实现这一点(只有那些具有分类条目的列(?

按变量cols:中的列使用DataFrame.apply

cols = df.select_dtypes(['category']).columns
df[cols] = df[cols].apply(lambda x: x.factorize()[0])

编辑:

您的解决方案应该简化:

for column in df.select_dtypes(['category']):
df[column] = df[column].factorize()[0]

我尝试了以下操作,看起来效果不错:

for column in df.select_dtypes(['category']):
df[column] = pd.Series(df[column].factorize()[0])

其中"category"可以是"bool"、"object"等

相关内容

  • 没有找到相关文章

最新更新