看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
将数据转换为合适的格式能够让数据高效计算,同时也能匹配指定类型的操作方法。astype() 方法将 pandas 对象强制转换为指定的 dtype 类型对象,它支持 DataFrame、Series 和 Index 等对象。
支持的对象有:
astype() 类型转换的一般语法有:
astype(dtype,
copy: 'bool_t' = True,
errors: 'str' = 'raise')
将 pandas 对象强制转换为指定的数据类型 dtype
。
参数:
copy=True
时返回一个副本(谨慎设置 copy=False
,因为对值的更改可能会传播到其他 pandas 对象)返回:
注意:
在 1.3.0 中更新的功能:
使用 astype 从 timezone-naive dtype 转换为 timezone-aware dtype 已被弃用,并将在未来版本中将报错。 请改用 Series.dt.tz_localize
。
以下是一些示例。
# 创建 DataFrame:
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df.dtypes
'''
col1 int64
col2 int64
dtype: object
'''
# 将所有列转为 int32:
df.astype('int32').dtypes
'''
col1 int32
col2 int32
dtype: object
'''
# 使用字典转为 int32
df.astype({'col1': 'int32'}).dtypes
'''
col1 int32
col2 int64
dtype: object
'''
# 创建 series:
ser = pd.Series([1, 2], dtype='int32')
ser
'''
0 1
1 2
dtype: int32
'''
ser.astype('int64')
'''
0 1
1 2
dtype: int64
'''
# 转为类别类型 categorical type
'''
ser.astype('category')
0 1
1 2
dtype: category
Categories (2, int64): [1, 2]
'''
# 使用自定义排序转换为有序分类类型:
from pandas.api.types import CategoricalDtype
cat_dtype = CategoricalDtype(
categories=[2, 1], ordered=True)
ser.astype(cat_dtype)
'''
0 1
1 2
dtype: category
Categories (2, int64): [2 < 1]
'''
# 请注意,使用 copy=False 并
# 更改新 pandas 对象上的数据可能会传播更改
s1 = pd.Series([1, 2])
s2 = s1.astype('int64', copy=False)
s2[0] = 10
s1 # note that s1[0] has changed too
'''
0 10
1 2
dtype: int64
'''
# 创建一个日期 Series
ser_date = pd.Series(pd.date_range('20200101', periods=3))
ser_date
'''
0 2020-01-01
1 2020-01-02
2 2020-01-03
dtype: datetime64[ns]
'''
Index.astype()
创建一个将值转换为 dtypes 的索引。新索引的类别由 dtype 确定,当无法进行转换时,会引发 TypeError 异常。
astype(self, dtype, copy: 'bool' = True)
参数:
其他一些类型转换相关方法:
可以了解一下。
更新时间:2022-07-05 16:12:21 标签:pandas 类型 转换