Ваша ошибка AttributeError: Can only use .dt accessor with datetimelike values
не имеет ничего общего только с вычитанием дат, когда оба значения доступны. Скорее, это связано с типами данных в столбцах, которые вы используете. По крайней мере, один из них не является объектом типа datetime, поэтому средство доступа .dt
просто недоступно. Используйте df.dtypes
, чтобы увидеть, какие столбцы не являются датой и временем, и pandas.to_datetime
, чтобы преобразовать. Как только вы это сделаете, вы увидите, как разница, которую вы пытаетесь вычислить, уже обработана:
>>> df = pd.DataFrame({'a_dt': pd.to_datetime([np.nan, '2019-01-01', '2020-02-04']), 'b_dt': pd.to_datetime([np.nan, np.nan, '2020-03-17'])})
>>> df
a_dt b_dt
0 NaT NaT
1 2019-01-01 NaT
2 2020-02-04 2020-03-17
# Both are datetime types
>>> df.dtypes
a_dt datetime64[ns]
b_dt datetime64[ns]
dtype: object
>>> df['b_dt'] - df['a_dt']
0 NaT
1 NaT
2 42 days
dtype: timedelta64[ns]