I am trying to "merge" two Dataframe based on overlapping intervals as below:
Dataset 1
| start_date | end_date | field1 |
|---|---|---|
| 2020-01-01 | 2020-06-30 | A |
| 2020-07-01 | 2020-12-31 | B |
Dataset 2
| start_date | end_date | field2 |
|---|---|---|
| 2020-01-01 | 2020-04-30 | D |
| 2020-05-01 | 2020-08-31 | E |
| 2020-09-01 | 2020-12-31 | F |
Combined Dataset
| start_date | end_date | field1 | field2 |
|---|---|---|---|
| 2020-01-01 | 2020-04-30 | A | D |
| 2020-05-01 | 2020-06-30 | A | E |
| 2020-07-01 | 2020-08-31 | B | E |
| 2020-09-01 | 2020-12-31 | B | F |
The code is python for the example would be the following
import pandas as pd
df1 = pd.DataFrame([['2020-01-01','2020-06-30','A'],
['2020-07-01','2020-12-31','B']],
columns = ['start_date', 'end_date', 'field1'])
df2 = pd.DataFrame([['2020-01-01','2020-04-30','D'],
['2020-05-01','2020-08-31','E'],
['2020-09-01','2020-12-31','F']],
columns = ['start_date', 'end_date', 'field2'])
expected_output = pd.DataFrame([['2020-01-01','2020-04-30','A','D'],
['2020-05-01','2020-06-30','A','E'],
['2020-07-01','2020-08-31','B','E'],
['2020-09-01','2020-12-31','B','F']],
columns = ['start_date', 'end_date','field1', 'field2'])
I have really tried to think about ways to do it but I must say my page is blank ... Thanks a lot in advance for any recommendation !