当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.DataFrame.astype用法及代码示例


用法:

DataFrame.astype(dtype, copy=True, errors='raise')

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

参数

dtype数据类型,或列名的字典 -> 数据类型

使用 numpy.dtype 或 Python 类型将整个 pandas 对象转换为相同类型。或者,使用 {col:dtype, ...},其中 col 是列标签,dtype 是 numpy.dtype 或 Python 类型,将 DataFrame 的一个或多个列转换为 column-specific 类型。

copy布尔值,默认为真

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

errors{‘raise’, ‘ignore’},默认 ‘raise’

控制对提供的 dtype 的无效数据引发异常。

  • raise :允许引发异常

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

返回

casted与调用者相同的类型

注意

例子

创建一个 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, 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

创建一系列日期:

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

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.astype。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。