Zusammenführen von zwei dataframes basiert auf ein Datum zwischen zwei anderen Terminen ohne eine gemeinsame Spalte
Habe ich zwei dataframes, die ich Zusammenführen müssen, basierend auf, ob oder nicht ein date-Wert passt zwischen zwei andere Termine. Grundsätzlich, ich brauche, um führen Sie eine äußere Verknüpfung, bei der B.event_date
ist zwischen A.start_date
und A.end_date
. Es scheint, dass die merge und kommen immer davon ausgehen, eine gemeinsame Säule, die in diesem Fall, habe ich nicht.
A B
start_date end_date event_date price
0 2017-03-27 2017-04-20 0 2017-01-20 100
1 2017-01-10 2017-02-01 1 2017-01-27 200
Result
start_date end_date event_date price
0 2017-03-27 2017-04-20
1 2017-01-10 2017-02-01 2017-01-20 100
2 2017-01-10 2017-02-01 2017-01-27 200
- Werden Veranstaltungen überhaupt überschneiden sich in der Tabelle Ein?
- Nein. Die Zeit-Serie sind deutlich.
- Möglich, Duplikat der stackoverflow.com/questions/46525786/...
- Lösungen für größere Datenbanken finden Sie unter stackoverflow.com/questions/30627968/....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Daten erstellen und formatieren, datetimes:
Erstellen von Schlüsseln zu tun, die einen cross join:
Filtern von Datensätzen, die nicht den Kriterien der Veranstaltungstermine zwischen start-und end-Termine:
Join zurück zum ursprünglichen Datum range-Tabelle und drop Schlüssel Spalte
Ausgabe:
numpy
basierte Lösung, die Sie finden, in einer Art und Weise platzt. Irgendwelche neuen Ideen?