📜  如何在 pandas 中转换列的数据类型 - Python (1)

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

如何在 Pandas 中转换列的数据类型 - Python

数据类型转换是数据处理和预处理中的重要步骤。Pandas库提供了一种简单而有效的方式来转换数据类型。在本文中,我们将学习如何在 Pandas 中转换 DataFrame 列的数据类型。

转换单个列的数据类型

转换单个列的数据类型可以使用 Series.astype() 方法。此方法接受要转换为的数据类型作为参数。以下是一个示例:

import pandas as pd

# 创建 DataFrame
data = {'age': ['21', '23', '19', '25', '28'],
        'score': [95, 80, 85, 90, 88]}
df = pd.DataFrame(data)

# 显示 DataFrame
print("Original DataFrame:\n", df)

# 将 age 列转换为整数类型
df['age'] = df['age'].astype(int)

# 显示转换后的 DataFrame
print("\nDataFrame after converting age column to integer:\n", df)

以上代码将 age 列从字符串类型转换为整数类型。

同时转换多个列的数据类型

如果要同时转换多个列的数据类型,则可以使用 DataFrame.astype() 方法。此方法接受要转换为的数据类型的字典作为参数。以下是一个示例:

import pandas as pd

# 创建 DataFrame
data = {'age': ['21', '23', '19', '25', '28'],
        'score': [95, 80, 85, 90, 88]}
df = pd.DataFrame(data)

# 显示 DataFrame
print("Original DataFrame:\n", df)

# 将 age 列和 score 列转换为整数类型
df = df.astype({'age': int, 'score': int})

# 显示转换后的 DataFrame
print("\nDataFrame after converting age and score columns to integer:\n", df)

以上代码将 age 列和 score 列从字符串类型转换为整数类型。

错误处理

转换数据类型时,如果存在无效值或数据格式不一致的情况,可能会引发异常。在 Pandas 中,可以使用 errors 参数来控制错误处理方式。以下是一些常见的错误处理方式:

  • raise:如果无法转换,则引发异常(默认行为)。
  • ignore:忽略无法转换的值,保持未更改。
  • coerce:将无法转换的值设置为 NaN。

以下是一个示例:

import pandas as pd

# 创建 DataFrame
data = {'age': ['21', '23', 'invalid', '25', '28'],
        'score': [95, 80, 'invalid', 90, 88]}
df = pd.DataFrame(data)

# 显示 DataFrame
print("Original DataFrame:\n", df)

# 使用 errors='raise' 参数引发异常
try:
  df['age'] = df['age'].astype(int, errors='raise')
except ValueError as e:
  print("ValueError:", e)

# 使用 errors='ignore' 参数忽略无法转换的值
df['score'] = pd.to_numeric(df['score'], errors='ignore')

# 使用 errors='coerce' 参数将无法转换的值设置为 NaN
df['new_score'] = pd.to_numeric(df['score'], errors='coerce')

# 显示转换后的 DataFrame
print("\nDataFrame after error handling:\n", df)

以上代码将演示如何使用不同的错误处理方式。

结论

Pandas 提供了一种简单而有效的方式来转换 DataFrame 列的数据类型。我们可以使用 Series.astype() 方法来转换单个列的数据类型,或使用 DataFrame.astype() 方法来同时转换多个列的数据类型。在转换数据类型时,我们需要注意处理无效值和错误处理。