📅  最后修改于: 2023-12-03 15:26:21.756000             🧑  作者: Mango
在 Pandas 中,可以通过 astype()
方法来更改 DataFrame 或 Series 的数据类型。 astype()
方法需要一个参数,即要转换的数据类型。这个参数可以是 Python 的内置数据类型,也可以是 numpy 的数据类型。
假设我们有一个名为 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
假设我们有一个名为 data
的 DataFrame,其中包含两列数据,分别为 age
和 height
。现在,我们希望将这两列数据的数据类型都转换为浮点数。
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
列转换为整数。