-1

给定数据

ID 开始日期 频率
1 10-10-2015 1
2 20–10-2016 2

我需要这种格式

ID 开始日期 频率 日期1 数据2 日期3 日期4
1 10-10-2015 1 2016 年 10 月 10 日 10-10-2017 10-10-2018
2 20–10-2016 2 20-04-2017 20-10-2017 20-04-2018 20-10-2018

如果频率为 1 日期以 1 年递增,且不应超过 2018 年。如果频率为 2 日期以 6 个月递增,且不应超过 2018 年。

4

1 回答 1

1

您可以apply pd.date_range在每一行上创建所需的日期并join返回到原始 DataFrame:

df["start Date"] = pd.to_datetime(df["start Date"], format="%d-%m-%Y")
dates = df.apply(lambda x: pd.Series(pd.date_range(x["start Date"], 
                                                   "2018-12-31", 
                                                   freq=pd.DateOffset(months=12/x["Frequency"]))
                                                   ).add_prefix("Date"), axis=1)
output = df.join(dates.iloc[:,1:])

>>> output
   id start Date  Frequency      Date1      Date2      Date3      Date4
0   1 2015-10-10          1 2016-10-10 2017-10-10 2018-10-10        NaT
1   2 2016-10-20          2 2017-04-20 2017-10-20 2018-04-20 2018-10-20
于 2022-02-16T16:48:06.573 回答