pandas.DataFrame.astype#
- DataFrame.astype(dtype, copy=<no_default>, errors='raise')[源代码]#
将 pandas 对象强制转换为指定的数据类型
dtype。此方法允许将 pandas 对象(包括 DataFrame 和 Series)的数据类型转换为指定的数据类型。它支持将整个对象强制转换为单一数据类型,或使用映射将不同的数据类型应用于各个列。
- 参数:
- dtypestr, data type, Series 或 Mapping of column name -> data type
使用字符串、numpy.dtype、pandas.ExtensionDtype 或 Python 类型将整个 pandas 对象强制转换为相同的类型。或者,使用映射,例如 {col: dtype, …},其中 col 是列标签,dtype 是 numpy.dtype 或 Python 类型,用于将 DataFrame 的一个或多个列强制转换为特定于列的类型。
- copybool,默认值 False
此关键字已被忽略;更改其值将不会影响方法。
已弃用,版本 3.0.0: 此关键字已被忽略,并将在 pandas 4.0 中删除。自 pandas 3.0 起,此方法始终返回一个新对象,并使用延迟复制机制,该机制会推迟复制直到必要时(写时复制)。有关更多详细信息,请参阅关于写时复制的用户指南。
- errors{‘raise’, ‘ignore’}, 默认 ‘raise’
控制在提供的数据类型无效时是否引发异常。
raise: 允许引发异常ignore: 抑制异常。发生错误时返回原始对象。
- 返回:
- 与调用者相同的类型
已强制转换为指定
dtype的 pandas 对象。
另请参阅
to_datetime将参数转换为 datetime。
to_timedelta将参数转换为 timedelta。
to_numeric将参数转换为数值类型。
numpy.ndarray.astype将 numpy 数组转换为指定类型。
注意
版本 2.0.0 中已更改: 使用
astype从时区无关的 dtype 转换为时区感知的 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
使用字典将 col1 转换为 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
转换为分类类型
>>> 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]
创建日期 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[us]