Heim > Backend-Entwicklung > Python-Tutorial > Wie verbinde ich DataFrames mit überlappenden Datums-/Uhrzeitbereichen mithilfe der Intervallindizierung?

Wie verbinde ich DataFrames mit überlappenden Datums-/Uhrzeitbereichen mithilfe der Intervallindizierung?

Barbara Streisand
Freigeben: 2024-12-15 16:16:15
Original
113 Leute haben es durchsucht

How to Join DataFrames with Overlapping Datetime Ranges Using Interval Indexing?

Datenrahmen mit überlappenden Bereichen mithilfe der Intervallindizierung verbinden

Gegeben sind zwei Datenrahmen, df_1 und df_2, mit einer gemeinsamen Spalte, die einen Datums-/Uhrzeitbereich darstellt. Unser Ziel ist es, sie mithilfe einer bestimmten Bedingung zu verbinden: Die Datetime-Spaltenwerte von df_1 müssen innerhalb der in angegebenen Bereiche liegen df_2.

df_1

  timestamp              A          B
0 2016-05-14 10:54:33    0.020228   0.026572
1 2016-05-14 10:54:34    0.057780   0.175499
2 2016-05-14 10:54:35    0.098808   0.620986
3 2016-05-14 10:54:36    0.158789   1.014819
4 2016-05-14 10:54:39    0.038129   2.384590


df_2

  start                end                  event    
0 2016-05-14 10:54:31  2016-05-14 10:54:33  E1
1 2016-05-14 10:54:34  2016-05-14 10:54:37  E2
2 2016-05-14 10:54:38  2016-05-14 10:54:42  E3
Nach dem Login kopieren

Lösung:

Wir können die Intervallindizierung verwenden, um dies zu erreichen. Durch die Intervallindizierung werden Bins basierend auf den in df_2 angegebenen Bereichen erstellt und den Zeitstempeln in df_1, die in diese Bins fallen, Beschriftungen zugewiesen.

import pandas as pd

# Convert start and end columns to IntervalIndex
df_2.index = pd.IntervalIndex.from_arrays(df_2['start'], df_2['end'], closed='both')

# Get the event associated with each timestamp in df_1
df_1['event'] = df_1['timestamp'].apply(lambda x: df_2.iloc[df_2.index.get_loc(x)]['event'])
Nach dem Login kopieren

Ausgabe:

            timestamp         A         B event
0 2016-05-14 10:54:33  0.020228  0.026572    E1
1 2016-05-14 10:54:34  0.057780  0.175499    E2
2 2016-05-14 10:54:35  0.098808  0.620986    E2
3 2016-05-14 10:54:36  0.158789  1.014819    E2
4 2016-05-14 10:54:39  0.038129  2.384590    E3
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verbinde ich DataFrames mit überlappenden Datums-/Uhrzeitbereichen mithilfe der Intervallindizierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage