DataFrame.dtypes не работает после astype() в pandas.

Вопрос или проблема

Я преобразовал столбец OrderDate из существующего типа данных object в ‘datetime64[ns]’ с помощью метода astype.

Но после dtypes() я увидел, что это не сработало.

Почему?

Спасибо.

`df_raw.OrderDate.astype(‘datetime64[ns]’),

`astype выполнен

df_raw.dtypes

dtypes не изменены

Я думаю (предполагаю), что вы не присвоили результат обратно в столбец, что вызывает проблему.

Я попробовал на примерных данных, как показано ниже.

          Продолжительность  Пульс    Макс. пульс  Калории
     0       60      110       130       409.1
     1       60      117       145       479.0
     2       60      103       135       340.0
     3       45      109       175       282.4
     4       45      117       148       406.0

Пример кода

print(df.dtypes)

print("----------------")
df.Duration = df.Duration.astype('int32')
print(df.dtypes)

Получил следующий ответ

 Продолжительность      int64
 Пульс         int64
 Макс. пульс      int64
 Калории    float64
 dtype: object
 ----------------
 Продолжительность      int32
 Пульс         int64
 Макс. пульс      int64
 Калории    float64
 dtype: object

Теперь, чтобы ответить на это: если вы сделали только
df_raw.OrderDate.astype('datetime64[ns]')

Попробуйте сделать

df_raw.OrderDate = df_raw.OrderDate.astype('datetime64[ns]')

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, как работает метод astype() в Pandas. Когда вы используете df_raw.OrderDate.astype('datetime64[ns]'), этот метод возвращает новый объект с преобразованными данными, но не изменяет исходный DataFrame df_raw на месте. Таким образом, изменения, которые вы пытаетесь внести, не сохраняются.

Для того чтобы преобразовать тип данных в вашем столбце OrderDate и сохранить это изменение, вам необходимо присвоить результат обратно в столбец. В вашем случае это будет выглядеть следующим образом:

df_raw.OrderDate = df_raw.OrderDate.astype('datetime64[ns]')

После выполнения этого кода, если вы снова вызовете df_raw.dtypes, вы увидите, что тип данных для столбца OrderDate изменился на datetime64[ns].

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

import pandas as pd

# Пример данных
data = {'OrderDate': ['2021-01-01', '2021-02-01', '2021-03-01']}
df_raw = pd.DataFrame(data)

# Просмотр начального типа данных
print(df_raw.dtypes)

# Преобразование типа данных
df_raw.OrderDate = df_raw.OrderDate.astype('datetime64[ns]')

# Проверка типов данных после преобразования
print(df_raw.dtypes)

Этот подход гарантирует, что ваши изменения будут применены, и вы сможете проверить результат с помощью метода dtypes.

Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...