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 列转换为整数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注