如何构建一个循环,将分类列的条目转换为 Pandas 中的数值?
How to build a loop for converting entires of categorical columns to numerical values in Pandas?
我有一个包含多个列的 Pandas 数据框,其中一些列包含分类条目。我正在 'manually' 将这些条目转换为数值。例如,
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])
如果列数很大,这种方法显然效率低下。有没有办法通过在所有列(仅那些具有分类条目的列)上构建循环来做到这一点?
我尝试了以下方法,似乎工作正常:
for column in df.select_dtypes(['category']):
df[column] = pd.Series(df[column].factorize()[0])
其中 'category' 可以是 'bool'、'object' 等
在变量 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]
我有一个包含多个列的 Pandas 数据框,其中一些列包含分类条目。我正在 'manually' 将这些条目转换为数值。例如,
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])
如果列数很大,这种方法显然效率低下。有没有办法通过在所有列(仅那些具有分类条目的列)上构建循环来做到这一点?
我尝试了以下方法,似乎工作正常:
for column in df.select_dtypes(['category']):
df[column] = pd.Series(df[column].factorize()[0])
其中 'category' 可以是 'bool'、'object' 等
在变量 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]