我有一个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"等