使用开始日期列表 (MM-DD),遍历结束日期列 (YYYY-MM-DD),找到比结束日期 yr 早一年的开始年份

With list of start dates (MM-DD), iterate through column of end dates (YYYY-MM-DD), find the start yr that is one yr prior to end date yr

我有两个数据集。一个包含 63 年的环境数据以及每个日期的值(~23K 日期),第二个包含收集环境样本的列表日期(~1K)。我需要将第一组的值与第二组的结束日期相加。脚本问题是开始日期将作为 MMs-DDs 列表传递,年份将始终在结束日期之前的一年。例如,如果结束日期为 1973-02-16 和 1988-04-09,开始日期为 11 月 15 日,则每个结束日期的适当开始日期年份为 1972-11-15 和 1987-11-15 .

因此,我如何遍历结束日期列表,对于每个结束日期年份减去一年,将该年份添加到开始日期,这样我就可以对开始日期和结束日期之间的值求和(其中然后我会将值存储在结束日期旁边的列中)? Python 对我来说关键是如何获取 YYYY-MM-DD 格式的开始日期,以便我可以对两个日期之间的值求和。以下是为说明目的而创建的数据集。

构建示例数据集

import pandas as pd
import numpy as np
import datetime


dat_r = pd.date_range('1972-11-12', '1988-04-10')
dataset_1 = pd.DataFrame({'DATE': dat_r, 'VALUE':np.random.rand(dat_r.__len__())})

dataset_2 = pd.DataFrame({'END DATE': [datetime.date(1973,2,16), datetime.date(1974,1,12), datetime.date(1975,5,23), datetime.date(1981,3,3)]})
list_of_start_dates = pd.DataFrame({'DATE (Start)': ['09-01', '10-15', '11-30', '12-05']})

您可以按如下方式构建所需的数据集:

dff = pd.DataFrame(index=dataset_2['END DATE'], columns=list_of_start_dates['DATE (Start)'])

dff = dff.melt(ignore_index=False)

日期可以加上年份,像这样

dff['AUX'] = pd.to_datetime(dff.index.map(lambda x: str(x.year-1))+"-"+dff['DATE (Start)'])