Spec-Zone.ru › pandas 0.25

pandas.DataFrame.astype

DataFrame.astype(self, dtype, copy=True, errors='raise', **kwargs) [source]

Преобразование объекта pandas к указанному типу dtype.

Параметры:
dtype : data type, or dict of column name -> data type

Используйте numpy.dtype или Python-тип для преобразования всего объекта pandas к одному типу. В качестве альтернативы, используйте {col: dtype, …}, где col — имя столбца, а dtype — numpy.dtype или Python-тип для преобразования одного или нескольких столбцов DataFrame к столбцово-специфическим типам.

copy : bool, default True

Возвращает копию, когда copy=True (будьте очень внимательны при установке copy=False, так как изменения значений могут затем распространиться на другие объекты pandas).

errors : {‘raise’, ‘ignore’}, default ‘raise’

Управление выводом исключений при некорректных данных для предоставленного типа.

  • raise : разрешить выводить исключения
  • ignore : подавить исключения. В случае ошибки возвращает исходный объект

Введено в версии 0.20.0.

kwargs : keyword arguments to pass on to the constructor
Возвращаемое значение:
casted : same type as caller

См. также

to_datetime
Преобразование аргумента в datetime.
to_timedelta
Преобразование аргумента в timedelta.
to_numeric
Преобразование аргумента в числовой тип.
numpy.ndarray.astype
Преобразование numpy массива к указанному типу.

Примеры

Создаём 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, int64): [1, 2]

Преобразуем к упорядоченному категориальному типу с пользовательским порядком:

>>> cat_dtype = pd.api.types.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

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.DataFrame.astype.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API