Pandas:如何使用 factorize() 将字符串编码为数字
pandas Factorize()函数可用于将字符串编码为数值。
您可以使用以下方法将Factorize()函数应用于 pandas DataFrame 的列:
方法 1:分解列
df[' col1 '] = pd. factorize (df[' col '])[0]
方法 2:因子特定列
df[[' col1 ', ' col3 ']] = df[[' col1 ', ' col3 ']]. apply ( lambda x: pd.factorize (x)[ 0 ])
方法 3:分解所有列
df = df. apply ( lambda x: pd.factorize (x)[ 0 ])
以下示例展示了如何将每种方法与以下 pandas DataFrame 一起使用:
import pandas as pd #createDataFrame df = pd. DataFrame ({' conf ': ['West', 'West', 'East', 'East'], ' team ': ['A', 'B', 'C', 'D'], ' position ': ['Guard', 'Forward', 'Guard', 'Center'] }) #view DataFrame df conf team position 0 West A Guard 1 West B Forward 2 East C Guard 3 East D Center
示例 1:因式分解一列
以下代码显示了如何分解 DataFrame 中的列:
#factorize the conf column only df[' conf '] = pd. factorize (df[' conf '])[ 0 ] #view updated DataFrame df conf team position 0 0 A Guard 1 0 B Forward 2 1 C Guard 3 1 D Center
请注意,仅考虑了“conf”列。
每个“West”值现在都是 0,每个“East”值现在都是 1。
示例 2:因子特定列
以下代码显示了如何分解 DataFrame 中的特定列:
#factorize conf and team columns only df[[' conf ', ' team ']] = df[[' conf ', ' team ']]. apply ( lambda x: pd.factorize (x)[ 0 ]) #view updated DataFrame df conf team position 0 0 0 Guard 1 0 1 Forward 2 1 2 Guard 3 1 3 Center
请注意,“conf”和“team”列都已被考虑在内。
示例 3:因式分解所有列
以下代码显示了如何分解 DataFrame 中的所有列:
#factorize all columns df = df. apply ( lambda x: pd.factorize (x)[ 0 ]) #view updated DataFrame df conf team position 0 0 0 0 1 0 1 1 2 1 2 0 3 1 3 2
请注意,所有列均已分解。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作:
如何将 Pandas DataFrame 列转换为字符串
如何在 Pandas 中将分类变量转换为数值
如何将 Pandas DataFrame 列转换为整数