如何在 Pandas DataFrame 中将字符串转换为整数?
Python 是最流行的数据分析和处理编程语言之一,这并非没有道理。凭借其直观的语法和丰富的库生态系统,Python 为数据处理提供了强大的平台。Pandas 就是这样一个库,它是一个高度通用的数据处理和分析工具。Pandas 允许我们轻松地以各种方式操作和转换数据,使其成为任何数据分析师或科学家工具包中不可或缺的一部分。
在本教程中,我们将重点关注数据分析中经常出现的一个特定问题:在 Pandas DataFrame 中将字符串数据转换为整数数据。作为数据分析师,我们经常遇到存储为字符串的数据,即使将其作为数值数据更有用。在文章的下一节中,我们将探讨几种在 Pandas 中将字符串数据转换为整数数据的方法,包括使用 astype() 和 to_numeric() 函数。我们还将讨论在处理数据转换时需要记住的一些最佳实践和注意事项。
如何在 Pandas DataFrame 中将字符串转换为整数?
在 Pandas 中将字符串数据转换为整数数据可以使用多种方法。
方法一:使用 astype() 函数
Pandas 中的 astype() 函数允许我们更改 DataFrame 中列的数据类型。此方法简单明了,在将 Pandas 中的字符串数据转换为整数数据时非常有用。我们可以将 astype() 函数应用于所需的列并指定所需的数据类型,在本例中为“int”。
要使用 astype() 函数进行数据转换,我们只需在 DataFrame 上调用此方法并指定要将列转换为的数据类型即可。例如,以下代码演示了如何使用 astype() 函数将字符串列“Age”转换为整数列
示例
# Importing required libraries import pandas as pd # Creating sample DataFrame df = pd.DataFrame({'Name': ['Prince', 'Mukul', 'Divyang', 'Rohit'], 'Age': ['25', '30', '35', '40'], 'Salary': ['50000', '60000', '70000', '80000']}) # Converting Age column to integer using astype() function df['Age'] = df['Age'].astype(int) # Output 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 现在有三个列——姓名、年龄和工资,其中“年龄”列包含整数而不是字符串值。
需要注意的是,使用 astype() 函数时,字符串值必须可转换为整数;否则,将引发 ValueError。此外,如果列中存在任何非数字字符或缺失值,则此方法将无法按预期工作。
方法二:使用 to_numeric() 函数
Pandas 中的 to_numeric() 函数是将字符串列转换为整数数据类型的另一种有用方法。此函数允许我们将各种数据类型转换为数值类型,包括字符串。它在处理转换错误方面提供了更大的灵活性,并提供其他参数来自定义转换过程。
要使用 to_numeric() 函数,我们只需在要转换的列上调用此函数并指定要转换到的数据类型即可。例如,以下代码演示了如何使用 to_numeric() 函数将字符串列“Age”转换为整数列
示例
# Importing required libraries import pandas as pd # Creating sample DataFrame df = pd.DataFrame({'Name': ['Prince', 'Mukul', 'Divyang', 'Rohit'], 'Age': ['25', '30', '35', '40'], 'Salary': ['50000', '60000', '70000', '80000']}) # Converting Age column to integer using to_numeric() function df['Age'] = pd.to_numeric(df['Age'], errors='coerce', downcast='integer') # Output 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”列保持为 object(字符串)数据类型。
DataFrame 本身显示了更新后的“Age”列,其中字符串值已转换为其对应的整数值。
因此,我们已经成功地使用 astype() 函数和 to_numeric() 函数在 Pandas DataFrame 中将字符串转换为整数。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
结论
在本教程中,我们探讨了在 Pandas DataFrame 中将字符串数据转换为整数数据的方法。astype() 函数和 to_numeric() 函数是将字符串转换为整数的两种最常用的方法。当我们知道字符串列仅包含整数时,astype() 方法很有用,而 to_numeric() 在处理转换错误方面更灵活。我们为每种方法都提供了一个示例。使用 astype() 方法时,请确保字符串值可转换为整数;否则,它将引发 ValueError。同样,当列中存在非数字字符或缺失值时,to_numeric() 函数也不适用。总的来说,要使用的方法取决于项目的具体要求。