如何在 Pandas DataFrame 中将字符串转换为整数?

pythonpandasprogramming

Python 是数据分析和操作最流行的编程语言之一,这是有原因的。凭借其直观的语法和丰富的库生态系统,Python 提供了一个强大的数据处理平台。Pandas 就是这样一个库,它是一种用途广泛的数据操作和分析工具。Pandas 使我们能够以多种方式轻松操作和转换数据,使其成为任何数据分析师或科学家工具包的重要组成部分。

在本教程中,我们将重点关注数据分析中经常出现的一个特定问题:在 Pandas DataFrames 中将字符串数据转换为整数数据。作为数据分析师,我们经常会遇到以字符串形式存储的数据,即使它作为数字数据更有用。在本文的下一部分中,我们将探讨在 Pandas 中将字符串数据转换为整数数据的几种方法,包括使用 astype() 和 to_numeric() 函数。我们还将讨论处理数据转换时需要牢记的一些最佳实践和注意事项。

如何在 Pandas DataFrame 中将字符串转换为整数?

可以使用多种方法将 Pandas 中的字符串数据转换为整数数据。

方法 1:使用 astype() 函数

Pandas 中的 astype() 函数允许我们更改 DataFrame 中列的数据类型。在 Pandas 中将字符串数据转换为整数数据时,此方法简单易用。我们可以将 astype() 函数应用于所需的列并指定所需的数据类型,在本例中为"int"。

要使用 astype() 函数进行数据转换,我们可以简单地在 DataFrame 上调用此方法并指定要将列转换为的数据类型。例如,以下代码演示了如何使用 astype() 函数将字符串列"Age"转换为整数列:

示例

# 导入所需库
import pandas as pd

# 创建示例 DataFrame
df = pd.DataFrame({'Name': ['Prince', 'Mukul', 'Divyang', 'Rohit'],
                   'Age': ['25', '30', '35', '40'],
                   'Salary': ['50000', '60000', '70000', '80000']})

# 使用 astype() 函数将 Age 列转换为整数
df['Age'] = df['Age'].astype(int)

# 输出
print(df.dtypes)
print(df)

在上面的代码中,我们创建了一个名为"df"的示例 DataFrame。接下来,我们使用"astype()"函数将"Age"列转换为整数。"astype()"函数用于更改数据框中列的数据类型。我们指定"int"作为函数的参数,以将列转换为整数数据类型。更新后的 DataFrame 存储回"df"变量中。

最后,我们使用"dtypes"属性打印列的数据类型,并使用"print()"函数打印 DataFrame,以查看对"Age"列所做的更改。

输出

上述代码的输出将如下所示:

Name       object
Age         int32
Salary     object
dtype:     object

       Name  Age Salary
0    Prince   25  50000
1     Mukul   30  60000
2   Divyang   35  70000
3     Rohit   40  80000

从上面的输出中我们可以看到,"Age"列已成功转换为整数数据类型,由数据类型输出中的"int32"值表示。DataFrame 现在有三列 - Name、Age 和 Salary,其中 Age 列包含整数值而不是字符串值。

需要注意的是,使用 astype() 函数时,字符串值必须可转换为整数;否则将引发 ValueError。此外,如果列中有任何非数字字符或缺失值,此方法将无法按预期工作。

方法 2:使用 to_numeric() 函数

Pandas 中的 to_numeric() 函数是将字符串列转换为整数数据类型的另一种有用方法。此函数允许我们将各种数据类型转换为数字类型,包括字符串。它提供了更大的灵活性来处理转换错误,并提供了额外的参数来定制转换过程。

要使用 to_numeric() 函数,我们可以简单地在要转换的列上调用此函数并指定要转换为的数据类型。例如,以下代码演示了如何使用 to_numeric() 函数将字符串列"Age"转换为整数列:

示例

# 导入所需的库
import pandas as pd

# 创建示例 DataFrame
df = pd.DataFrame({'Name': ['Prince', 'Mukul', 'Divyang', 'Rohit'],
                   'Age': ['25', '30', '35', '40'],
                   'Salary': ['50000', '60000', '70000', '80000']})

# 使用 to_numeric() 函数将 Age 列转换为整数
df['Age'] = pd.to_numeric(df['Age'], errors='coerce', downcast='integer')

# 输出
print(df.dtypes)
print(df)

在上面的代码中,我们使用 pd.to_numeric() 函数将 DataFrame 的"Age"列从字符串转换为整数。该函数以列作为参数,并附加参数:errors='coerce' 和 downcast='integer'。errors='coerce' 参数确保任何不可转换的值都转换为 NaN(非数字)。downcast='integer' 参数通过将结果数据类型向下转换为整数(如果可能)来优化内存使用。

上述代码的输出将如下所示:

输出

Name      object
Age        Int8
Salary    object
dtype: object

     Name  Age Salary
0  Prince   25  50000
1   Mukul   30  60000
2 Divyang   35  70000
3   Rohit   40  80000

在上面的输出中,我们可以看到"Age"列已转换为 Int8 数据类型,表示范围从 -128 到 127 的有符号整数。"Name"和"Salary"列保留为对象(字符串)数据类型。

DataFrame 本身显示更新后的"Age"列,其中字符串值已转换为其对应的整数值。

因此,我们已成功使用 astype() 函数和 to_numeric() 函数将 Pandas Dataframe 中的字符串转换为整数。

结论

在本教程中,我们探索了在 Pandas DataFrames 中将字符串数据转换为整数数据的方法。astype() 函数和 to_numeric() 函数是将字符串转换为整数的两种最流行的方法。当我们知道字符串列只包含整数时,astype() 方法很有用,而 to_numeric() 在处理转换错误方面更灵活。我们为每种方法都提供了一个示例。使用 astype() 方法时,请确保字符串值可转换为整数;否则,它将引发 ValueError。同样,当列中有非数字字符或缺失值时,to_numeric() 函数不适用。总的来说,要使用的方法取决于项目的具体要求。


相关文章