Python Pandas: преобразование значения timedelta из вычитания двух дат в целочисленный тип данных (AttributeError) - PullRequest
0 голосов
/ 18 октября 2018

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

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 выглядит какобъект.

Я хочу преобразовать столбец 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 Ответ

0 голосов
/ 18 октября 2018

Тот факт, что вы получаете столбец объекта, подсказывает мне, что есть некоторые значения, которые не могут быть истолкованы как правильные timedeltas.Если это так, я бы использовал 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
...