pandas 强制类型转换 df.astype实例

  • Post category:Python

下面是关于“pandas强制类型转换df.astype实例”的详细攻略:

什么是df.astype()?

df.astype()是 pandas 库中一个用于数据类型转换的函数,可以将 pandas 的数据类型转换为其他类型,如将 object 类型转换为 float 类型。

df.astype()的语法

df.astype(dtype, copy=True, errors='raise')

其中:

  • dtype:指定转换后的目标数据类型,可以是字符串(如 'float')或 numpy 的数据类型(如 np.int64)。
  • copy:默认为 True,返回转换后的数据副本(即原始数据不变),如果为 False,则返回原始数据的视图。
  • errors:默认为 'raise',抛出异常,表示如果有转换错误则引发异常,其他可选项包括 'ignore''coerce'

df.astype()的使用注意事项

  1. 当使用 df.astype() 时,有可能会出现无法转换的数据类型,此时可以使用 errors 参数选择忽略错误或强制转换。但是,如果忽略错误,转换后的结果可能并不完全正确。
  2. 在处理字符串类型数据时,需要注意数据的格式,如果数据格式不一致,可能导致转换失败或结果不正确。

df.astype()的示例

示例一

下面是将 df 中的字符串类型转换为浮点类型的例子:

import pandas as pd

data = {'name': ['Tom', 'Jerry', 'Mike'],
        'score': ['90.5', '80', '68.7']}
df = pd.DataFrame(data)

df['score'] = df['score'].astype(float)
print(df.dtypes)

输出:

name      object
score    float64
dtype: object

这里将原始数据中的 'score' 列的字符串类型转换为了浮点类型。

示例二

下面是忽略转换错误的例子,假设原始数据中有一个无法转换为数字的字符串:

import pandas as pd

data = {'name': ['Tom', 'Jerry', 'Mike', 'John'],
        'score': ['90.5', '80', 'abc', '68.7']}
df = pd.DataFrame(data)

df['score'] = pd.to_numeric(df['score'], errors='coerce')
print(df)

输出:

    name  score
0    Tom   90.5
1  Jerry   80.0
2   Mike    NaN
3   John   68.7

这里使用了 pd.to_numeric() 函数将字符串类型的 'score' 列转换为数字类型,但是由于数据中包含无法转换为数字的字符串 'abc',因此将其转换为了 NaN(空值)。

注意,这里使用了 errors='coerce',表示将无法转换的字符串类型数据转换为 NaN,而不是抛出异常。