Вы можете сдвинуть и использовать dt-аксессор для результата:
In [11]: df.date - df.date.shift()
Out[11]:
0 NaT
1 365 days
2 4 days
Name: date, dtype: timedelta64[ns]
In [12]: (df.date - df.date.shift()).dt.days
Out[12]:
0 NaN
1 365.0
2 4.0
Name: date, dtype: float64
In [13]: (df.date - df.date.shift()).dt.days.fillna(0)
Out[13]:
0 0.0
1 365.0
2 4.0
Name: date, dtype: float64
сдвиг вверх, чтобы получить тот же результат, который вы хотели:
In [14]: (df.date.shift(-1) - df.date).dt.days.fillna(0)
Out[14]:
0 365.0
1 4.0
2 0.0
Name: date, dtype: float64
Какпрокомментировал, что вы можете сделать это чище, используя diff:
In [21]: -df.date.diff(-1).fillna(0)
Out[21]:
0 365 days
1 4 days
2 0 days
Name: date, dtype: timedelta64[ns]
In [22]: -df.date.diff(-1).fillna(0).dt.days
Out[22]:
0 365
1 4
2 0
Name: date, dtype: int64