📜  更改列或 Pandas Series 的数据类型(1)

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

更改列或 Pandas Series 的数据类型

在 Pandas 中,可以通过 astype() 方法来更改 DataFrame 或 Series 的数据类型。 astype() 方法需要一个参数,即要转换的数据类型。这个参数可以是 Python 的内置数据类型,也可以是 numpy 的数据类型。

更改 Series 的数据类型

假设我们有一个名为 ages 的 Series,其中包含一些人的年龄,其数据类型为整数。现在,我们希望将其转换为浮点数。

import pandas as pd

ages = pd.Series([23, 36, 45, 21, 32])

ages = ages.astype(float)

print(ages)

输出:

0    23.0
1    36.0
2    45.0
3    21.0
4    32.0
dtype: float64
更改 DataFrame 的数据类型

假设我们有一个名为 data 的 DataFrame,其中包含两列数据,分别为 ageheight。现在,我们希望将这两列数据的数据类型都转换为浮点数。

import pandas as pd

data = pd.DataFrame({
    'age': [23, 36, 45, 21, 32],
    'height': [163, 175, 168, 172, 181]
})

data[['age', 'height']] = data[['age', 'height']].astype(float)

print(data.dtypes)

输出:

age       float64
height    float64
dtype: object
强制转换

有时候,我们希望将某些列强制转换为特定的数据类型,即使它们的值无法转换为该数据类型。在这种情况下,可以使用 pd.to_numeric()pd.to_datetime() 方法。

import pandas as pd

data = pd.DataFrame({
    'age': [23, 36, '45', 21, '32'],
    'height': [163, 175, 168, 172, 181]
})

data['age'] = pd.to_numeric(data['age'], errors='coerce')
data['height'] = pd.to_numeric(data['height'], errors='coerce')

print(data.dtypes)

输出:

age       float64
height      int64
dtype: object

在上面的代码中,我们使用了 pd.to_numeric() 方法将 age 列转换为浮点数,因为第三个值是字符串,无法直接转换。另外,我们还将 errors 参数设置为 'coerce',这意味着对于无法转换的值,将其转换为 NaN。类似地,我们使用了 pd.to_numeric() 方法将 height 列转换为整数。