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