У меня в столбце данных есть два временных столбца: с именами date1 и date2.
Насколько я всегда предполагал, оба в формате date_time. Однако теперь мне нужно вычислить разницу в днях между ними, и она не работает.
Я выполняю следующий код для анализа данных:
df['month1'] = pd.DatetimeIndex(df['date1']).month
df['month2'] = pd.DatetimeIndex(df['date2']).month
print(df[["date1", "date2", "month1", "month2"]].head(10))
print(df["date1"].dtype)
print(df["date2"].dtype)
Вывод:
date1 date2 month1 month2
0 2016-02-29 2017-01-01 1 1
1 2016-11-08 2017-01-01 1 1
2 2017-11-27 2009-06-01 1 6
3 2015-03-09 2014-07-01 1 7
4 2015-06-02 2014-07-01 1 7
5 2015-09-18 2017-01-01 1 1
6 2017-09-06 2017-07-01 1 7
7 2017-04-15 2009-06-01 1 6
8 2017-08-14 2014-07-01 1 7
9 2017-12-06 2014-07-01 1 7
datetime64[ns]
object
Как видите, месяц для date1 рассчитан неправильно!
Последняя операция, которая не работает:
df["date_diff"] = (df["date1"]-df["date2"]).astype('timedelta64[D]')
, что приводит к следующей ошибке:
incompatible type [object] for a datetime/timedelta operation
Сначала я подумал, что это может быть связано с date2, поэтому я попытался:
df["date2_new"] = pd.to_datetime(df['date2'] - 315619200, unit = 's')
ведет к:
unsupported operand type(s) for -: 'str' and 'int'
У кого-нибудь есть идеи, что мне нужно изменить?