Python Pandas: преобразование значения timedelta из вычитания двух дат в целочисленный тип данных (AttributeError)

У меня есть следующий вывод набора данных (показанный ниже), который был произведен следующим кодом:

df_EVENT5_5['dtin'] = pd.to_datetime(df_EVENT5_5['dtin'])
df_EVENT5_5['age'] = df_EVENT5_5['dtin'].apply(dt.datetime.date) - df_EVENT5_5['dtbuilt'].apply(dt.datetime.date)

id  age
1   6252 days, 0:00:00
2   1800 days, 0:00:00
3   5873 days, 0:00:00

В приведенном выше наборе данных после запуска dtypes для фрейма данных возраст представляется объектом.

Я хочу преобразовать столбец age в целочисленный тип данных со значением только дней. Ниже мой желаемый результат:

id  age
1   6252 
2   1800 
3   5873 

Я попробовал следующий код:

df_EVENT5_5['age_no_days'] = df_EVENT5_5['age'].dt.total_seconds()/ (24 * 60 * 60) 

Ниже приведена ошибка:

AttributeError: может использовать только метод доступа.dt со значениями типа datetime

1 ответ

Тот факт, что вы получаете столбец объекта, подсказывает мне, что есть некоторые значения, которые нельзя интерпретировать как правильные временные интервалы. Если это так, я бы использовал pd.to_timedelta с аргументом errors='coerce'затем позвоните dt.days:

df['age'] = pd.to_timedelta(df['age'],errors='coerce').dt.days
>>> df
   id   age
0   1  6252
1   2  1800
2   3  5873
Другие вопросы по тегам