
AttributeError: можно использовать только аксессор .dt со значениями типа datetime. Ошибка возникает, «когда объект, к которому вы пытаетесь получить доступ с помощью аксессора .dt, не является значением, подобным дате и времени».
Воспроизведение ошибки
|
1 2 3 4 5 6 7 |
import pandas as pd # Create a DataFrame with a non-datetime column df = pd.DataFrame({'name': ['KHUSHI', 'KRUNAL', 'LATHIYA']}) # Try to access the day property of the 'name' column using the .dt accessor df['name'].dt.day |
Выход
|
1 |
AttributeError: Can only use .dt accessor with datetimelike values |
В этом примере мы создали DataFrame с одним столбцом с именем «имя», который содержит строковые значения.
Когда код пытается получить доступ к свойству дня этого столбца с помощью метода доступа .dt, он генерирует ошибку «AttributeError», поскольку столбец «имя» не является значением, подобным дате и времени.
Как исправить ошибку?
Вот четыре способа исправить ошибку AttributeError: можно использовать только метод доступа .dt с ошибкой значений datetimelike.
- Проверьте тип объекта.
- Преобразуйте объект в datetime.
- Проверьте наличие нулевых значений.
- Добавление формата преобразования даты.
Решение 1. Проверьте тип объекта
Убедитесь, что объект, который вы пытаетесь использовать метод доступа «.dt», является объектом, подобным дате и времени, например Pandas Timestamp, DatetimeIndex или Period.
Решение 2. Преобразуйте объект в формат datetime.
Чтобы исправить ошибку AttributeError: можно использовать только метод доступа .dt с ошибкой значений datetimelike в Python, используйте функцию «pd.to_datetime(df[‘column’], error=’coerce’)», чтобы преобразовать отсутствующие значения в NaN, а затем используйте функцию Аксессор .dt для получения значений даты.
Если вы установите параметр error=’coerce’, для этих строк будет установлено значение NaN, если преобразование не удастся для какой-либо конкретной строки.
|
1 2 3 4 5 6 7 8 |
import pandas as pd # Create a DataFrame with a non-datetime column df = pd.DataFrame({'name': ['KHUSHI', 'KRUNAL', 'LATHIYA']}) df['name'] = pd.to_datetime(df['name'], errors='coerce') print(df['name'].dt.day) |
Выход
|
1 2 3 4 5 |
0 NaN 1 NaN 2 NaN Name: name, dtype: float64 |
В этом примере мы пытаемся преобразовать значения, не похожие на дату и время, в значения даты и времени с помощью функции pd.to_datetime(), и все значения не похожи на дату и время; ему не удалось преобразовать их и установить значения NaN.
Решение 3. Проверьте наличие нулевых значений
Вы можете использовать функцию pandas fillna(), чтобы заполнить любые нулевые значения значением по умолчанию или удалить нулевые значения с помощью dropna().
|
1 |
df = df.dropna(subset=['date_column']) |
Решение 4. Добавление формата преобразования даты
Исправить ошибку можно, добавив формат преобразования даты в функцию to_datetime().
|
1 |
df['converted_col'] = pd.to_datetime(df.col, format='%Y-%m-%d %H:%M:%S') |
