Намного более длинный маршрут, чем у @Yoben, с использованием pandas ' date_range с некоторым itertools
love:
phase1 = ((code,
date,
num,
pd.date_range(end=date,periods=num)[::-1])
for code, date, num in df.to_numpy()
)
from itertools import product,chain
flatten = chain.from_iterable
phase2 = flatten(product([rest],expanded_date) for *rest, expanded_date in phase1)
phase3 = [(*rest, expanded) for rest, expanded in phase2]
cols = df.columns.tolist()
cols.append("Expanded Date")
pd.DataFrame(phase3, columns = cols)
Employee Code End Date Number Of Days Expanded Date
0 2501 2020-01-09 4 2020-01-09
1 2501 2020-01-09 4 2020-01-08
2 2501 2020-01-09 4 2020-01-07
3 2501 2020-01-09 4 2020-01-06
4 2501 2020-01-02 1 2020-01-02
5 2502 2020-01-20 3 2020-01-20
6 2502 2020-01-20 3 2020-01-19
7 2502 2020-01-20 3 2020-01-18
8 2503 2020-01-15 2 2020-01-15
9 2503 2020-01-15 2 2020-01-14