pandas.Series.astype #

系列。astype ( dtype , copy = None , error = 'raise' ) [来源] #

将 pandas 对象转换为指定的 dtype dtype

参数
dtype str、数据类型、系列或列名映射 -> 数据类型

使用 str、numpy.dtype、pandas.ExtensionDtype 或 Python 类型将整个 pandas 对象转换为相同类型。或者,使用映射,例如 {col: dtype, …},其中 col 是列标签,dtype 是 numpy.dtype 或 Python 类型,将 DataFrame 的一个或多个列转换为特定于列的类型。

复制布尔值,默认 True

返回一个副本copy=True(要非常小心地设置, copy=False因为对值的更改可能会传播到其他 pandas 对象)。

笔记

copy关键字将改变 pandas 3.0 中的行为 。默认情况下会启用Copy-on-Write ,这意味着所有带有 copy关键字的方法都将使用惰性复制机制来推迟复制并忽略copy关键字。 copy关键字将在 pandas 的未来版本中删除

您已经可以通过启用写入时复制来获得未来的行为和改进pd.options.mode.copy_on_write = True

错误{'raise', 'ignore'}, 默认 'raise'

控制对所提供的数据类型的无效数据引发异常。

  • raise:允许引发异常

  • ignore: 抑制异常。出错时返回原始对象。

返回
与调用者类型相同

也可以看看

to_datetime

将参数转换为日期时间。

to_timedelta

将参数转换为 timedelta。

to_numeric

将参数转换为数字类型。

numpy.ndarray.astype

将 numpy 数组转换为指定类型。

笔记

在版本 2.0.0 中更改:使用astype从 timezone-naive dtype 转换为 timezone-aware dtype 将引发异常。代替使用Series.dt.tz_localize()

例子

创建一个数据框:

>>> 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

使用字典将 col1 转换为 int32:

>>> df.astype({'col1': 'int32'}).dtypes
col1    int32
col2    int64
dtype: object

创建一个系列:

>>> ser = pd.Series([1, 2], dtype='int32')
>>> ser
0    1
1    2
dtype: int32
>>> ser.astype('int64')
0    1
1    2
dtype: int64

转换为分类类型:

>>> ser.astype('category')
0    1
1    2
dtype: category
Categories (2, int32): [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]

创建一系列日期:

>>> 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]