Вопрос или проблема
Я преобразовал столбец OrderDate из существующего типа данных object в ‘datetime64[ns]’ с помощью метода astype.
Но после dtypes() я увидел, что это не сработало.
Почему?
Спасибо.
`df_raw.OrderDate.astype(‘datetime64[ns]’),
df_raw.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
.
Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться!