Используйте pd.date_range
в понимании списка для assign
встроенных дат, затем DataFrame.explode
:
df = (df.assign(Date=[pd.date_range(end=e, periods=3, freq='D')
for e in df['Date']])
.explode('Date'))
[выход]
Name Date
0 Bob 2020-05-15
0 Bob 2020-05-16
0 Bob 2020-05-17
1 Alice 2020-03-30
1 Alice 2020-03-31
1 Alice 2020-04-01
Если важна дата заказа, вам может потребоваться дополнительный метод sort_values
, за которым следует sort_index
:
(df.assign(Date=[pd.date_range(end=e, periods=3, freq='D')
for e in df['Date']])
.explode('Date')
.sort_values(['Date'], ascending=False)
.sort_index())