pandas.DataFrame.astype#
- DataFrame.astype(dtype, copy=<no_default>, errors='raise')[源代码]#
将一个 pandas 对象转换为指定的数据类型
dtype
。- 参数:
- dtypestr, 数据类型, Series 或 列名 -> 数据类型的映射
使用 str、numpy.dtype、pandas.ExtensionDtype 或 Python 类型将整个 pandas 对象转换为相同类型。或者,使用映射,例如 {col: dtype, …},其中 col 是列标签,dtype 是 numpy.dtype 或 Python 类型,将一个或多个 DataFrame 的列转换为特定列类型。
- 复制bool, 默认 False
当
copy=True
时返回一个副本(设置copy=False
时要非常小心,因为对值的更改可能会传播到其他 pandas 对象)。备注
copy 关键字将在 pandas 3.0 中更改行为。写时复制 将默认启用,这意味着所有带有 copy 关键字的方法将使用延迟复制机制来推迟复制并忽略 copy 关键字。copy 关键字将在 pandas 的未来版本中被移除。
通过启用写时复制
pd.options.mode.copy_on_write = True
,您已经可以获得未来的行为和改进。自 3.0.0 版本弃用.
- 错误{‘raise’, ‘ignore’}, 默认 ‘raise’
对于提供的dtype,控制对无效数据引发异常。
raise
: 允许异常被引发ignore
: 抑制异常。在错误时返回原始对象。
- 返回:
- 与调用者相同类型
转换为指定
dtype
的 pandas 对象。
参见
to_datetime
将参数转换为日期时间。
to_timedelta
将参数转换为 timedelta。
to_numeric
将参数转换为数值类型。
numpy.ndarray.astype
将 numpy 数组转换为指定类型。
注释
在 2.0.0 版本发生变更: 使用
astype
从无时区数据类型转换为有时区数据类型将引发异常。请改用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
创建一个系列:
>>> 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]