Вы должны вычесть одинаковые типы - datetimes с datetime (с нулевым временем) или date с date .
Используйте Timestamp.now
с Timestamp.normalize
или Timestamp.floor
для удаления time
s:
df['diff'] = pd.to_datetime( df['date']) - pd.Timestamp.now().normalize()
df['diff'] = pd.to_datetime( df['date']) - pd.Timestamp.now().floor('d')
Youможно также использовать replace
:
dt = pd.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
df['diff'] = pd.to_datetime( df['date']) - dt
Или преобразовать Datetimes
в date
s для вычитания тех же типов:
dt = datetime.datetime.now().date()
df['diff'] = pd.to_datetime(df['date']).dt.date - dt
Образец :
rng = pd.date_range('2018-04-03', periods=10, freq='100D')
df = pd.DataFrame({'date': rng})
df['diff'] = pd.to_datetime( df['date']) - pd.Timestamp.now().normalize()
print (df)
date diff
0 2018-04-03 -261 days
1 2018-07-12 -161 days
2 2018-10-20 -61 days
3 2019-01-28 39 days
4 2019-05-08 139 days
5 2019-08-16 239 days
6 2019-11-24 339 days
7 2020-03-03 439 days
8 2020-06-11 539 days
9 2020-09-19 639 days