У меня есть два набора данных. Один содержит данные об окружающей среде за 63 года со значениями для каждой даты (~23 тыс. дат), второй содержит список дат (~1 тыс.), когда были взяты пробы окружающей среды. Мне нужно суммировать значения из первого набора с датой окончания из второго набора. Проблема со сценарием заключается в том, что дата начала будет передаваться в виде списка MM-DD, а год всегда будет в году, предшествующем дате окончания. Например, если конечными датами являются 16 февраля 1973 г. и 09 апреля 1988 г., а датой начала является 15 ноября, то соответствующий год начальной даты для каждой конечной даты будет 15 ноября 1972 г. и 15 ноября 1987 г. .
Поэтому, как мне перебирать список дат окончания, для каждого года даты окончания вычесть один год, добавить этот год к дате начала, чтобы затем я мог суммировать значения между датами начала и окончания (где я затем буду хранить значение в столбце рядом с датой окончания)? Камнем преткновения Python для меня является то, как получить дату начала в формате ГГГГ-ММ-ДД, чтобы я мог суммировать значения между двумя датами. Ниже представлены наборы данных, созданные в иллюстративных целях.
Создание выборочных наборов данных
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)'])