📜  如何将每个字符串转换为 python 数据框中的类别或 int - Python (1)

📅  最后修改于: 2023-12-03 15:38:46.098000             🧑  作者: Mango

如何将每个字符串转换为 Python 数据框中的类别或 int?

在数据分析中,我们常常需要将字符串转换为类别或整数类型,以方便后期分析处理。本文将介绍如何用 Python 将字符串转换为类别或整数类型,并将其应用于数据框中。

将字符串转换为类别

将字符串转换为类别的方法是使用 pandas 中的 Categorical 类型。Categorical 类型将字符串转换为类别,并在存储时只存储唯一值,减小了存储空间,并提高了性能。

import pandas as pd

# 创建一个字符串列表
color_list = ['red', 'green', 'blue', 'red', 'green', 'blue']

# 将字符串列表转换为 pandas 的 Categorical 类型
color_cat = pd.Categorical(color_list)

# 打印类别列表
print(color_cat)

输出:

[red, green, blue, red, green, blue]
Categories (3, object): [blue, green, red]

可以看到,Categorical 类型将字符串转换为类别,并自动去重,只保留唯一值。

将字符串转换为整数

将字符串转换为整数可以使用字典映射的方法,将每个字符串映射到一个唯一的整数。

# 创建一个字符串列表
fruit_list = ['apple', 'banana', 'orange', 'apple', 'banana', 'mango']

# 创建一个字典,将每个字符串映射为一个唯一的整数
fruit_to_id = {fruit: i for i, fruit in enumerate(set(fruit_list))}

# 将每个字符串映射为整数
fruit_int = [fruit_to_id[fruit] for fruit in fruit_list]

# 打印整数列表
print(fruit_int)

输出:

[1, 2, 0, 1, 2, 3]

可以看到,每个字符串被映射为一个唯一的整数。

将字符串转换为类别或整数类型的应用

现在将上述方法应用于数据框中,将其中的字符串列转换为类别或整数类型。

# 创建一个数据框
df = pd.DataFrame({
    'fruit': ['apple', 'banana', 'orange', 'apple', 'banana', 'mango'],
    'color': ['red', 'yellow', 'orange', 'red', 'yellow', 'green'],
})

# 将 fruit 列转换为类别
df['fruit_cat'] = pd.Categorical(df['fruit'])

# 将 color 列转换为整数
color_to_id = {color: i for i, color in enumerate(set(df['color']))}
df['color_int'] = [color_to_id[color] for color in df['color']]

# 打印数据框
print(df)

输出:

    fruit   color fruit_cat  color_int
0   apple     red     apple          0
1  banana  yellow    banana          1
2  orange  orange    orange          2
3   apple     red     apple          0
4  banana  yellow    banana          1
5   mango   green     mango          3

可以看到,fruit 列被转换为了类别类型,color 列被转换为了整数类型,数据框中的字符串列得到了有效的转换,方便数据分析和处理。