Я хочу объединить два фрейма данных (df1
и df2
) на основе столбца PERMNO
соотв. LPERMNO
:
df1.merge(df2, left_on='PERMNO', right_on='LPERMNO')
Однако при слиянии мне также нужно учитывать, что столбец date
из df1
находится между диапазоном двух столбцов LINKDT
и LINKENDDT
из df2
, поскольку df2
содержит различную информацию для каждой строки (см. столбец PRC
из df2
).
Например, индекс [0,1]
из df1
должен объединиться с индексом 0
из df2
и индекс [2,3]
из df1
должны объединиться с индексом 2
из df2
, поскольку значение date
находится в двух столбцах LINKDT
и LINKENDDT
.
К сожалению, я немного потерялся здесь, поэтому любая помощь приветствуется!
df1
PERMNO date
0 66325 2006-03-30
1 66325 2006-06-30
2 66325 2015-09-30
3 66325 2015-12-30
df2:
LPERMNO LINKDT LINKENDDT PRC
0 66325 1992-07-01 2014-04-30 10
1 66325 1983-09-23 1992-06-30 12
2 66325 2014-05-01 2019-12-31 8.5
ОБНОВЛЕНИЕ :
ожидаемый результат
Выходной фрейм данных имеет форму 2'000 '000x180.
PERMNO date LPERMNO LINKDT LINKENDDT PRC
0 66325 2006-03-30 66325 1992-07-01 2014-04-30 10
1 66325 2006-06-30 66325 1992-07-01 2014-04-30 10
2 66325 2015-09-30 66325 2014-05-01 2019-12-31 8.5
3 66325 2015-12-30 66325 2014-05-01 2019-12-31 8.5