在Pandas Dataframe中为一个或多个列更改数据类型
在数据分析和处理中,Pandas是一个十分常用的Python库。在Pandas中,Dataframe是一个类似于电子表格的二维表数据结构,可以对数据进行各种操作。在一些情况下,数据中的某些列可能需要更改数据类型。本文将介绍如何使用Pandas Dataframe为一个或多个列更改数据类型。
取得数据
首先,我们需要取得示例数据,创建一个包含整数、字符串、浮点数和日期的数据框:
import pandas as pd
from datetime import datetime
data = {
'id': [1, 2, 3, 4, 5],
'name': ['Tom', 'Jerry', 'Alice', 'Bob', 'Kate'],
'age': [20, 30, 25, 40, 28],
'score': [80.5, 90.0, 77.5, 88.0, 92.5],
'register_time': [
datetime(2020, 9, 1),
datetime(2020, 8, 1),
datetime(2020, 9, 5),
datetime(2020, 7, 1),
datetime(2020, 10, 1)
]
}
df = pd.DataFrame(data)
print(df)
运行后,输出的数据框如下:
id name age score register_time
0 1 Tom 20 80.5 2020-09-01
1 2 Jerry 30 90.0 2020-08-01
2 3 Alice 25 77.5 2020-09-05
3 4 Bob 40 88.0 2020-07-01
4 5 Kate 28 92.5 2020-10-01
查看数据类型
在更改数据类型之前,我们需要先查看数据框中各列的数据类型。可以使用.dtypes
属性查看数据框中的各列数据类型:
print(df.dtypes)
运行后,输出的结果如下:
id int64
name object
age int64
score float64
register_time datetime64[ns]
dtype: object
可以看到,id和age是整数,score是浮点数,name是字符串,register_time是日期。
更改列数据类型
更改单个列数据类型
要更改一个列的数据类型,可以使用.astype()
方法。例如,我们将id从整数更改为字符串类型:
df['id'] = df['id'].astype(str)
print(df.dtypes)
运行后,输出的结果如下:
id object
name object
age int64
score float64
register_time datetime64[ns]
dtype: object
可以看到,id的数据类型已经从整数更改为字符串。
更改多个列数据类型
如果需要更改多个列的数据类型,可以使用.astype()
方法和字典。例如,我们将id从字符串更改为整数,将age从整数更改为浮点数:
df = df.astype({'id': int, 'age': float})
print(df.dtypes)
运行后,输出的结果如下:
id int32
name object
age float64
score float64
register_time datetime64[ns]
dtype: object
可以看到,id的数据类型已经从字符串更改为整数,age的数据类型已经从整数更改为浮点数。
结论
在Pandas Dataframe中,可以使用.astype()
方法为一个或多个列更改数据类型。更改单个列数据类型时,可以直接使用.astype()
方法;更改多个列数据类型时,需要使用.astype()
方法和字典。