Heim >Backend-Entwicklung >Python-Tutorial >Wie verbinde ich Pandas-DataFrames basierend auf Zeitstempelbereichen?

Wie verbinde ich Pandas-DataFrames basierend auf Zeitstempelbereichen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-09 00:16:11795Durchsuche

How to Join Pandas DataFrames Based on Timestamp Ranges?

Datenrahmen basierend auf Wertebereichen verbinden

Bei zwei Datenrahmen, df_1 und df_2, ist es möglich, sie so zu verbinden, dass der Zeitstempel der Datums-/Uhrzeitspalte entsteht in df_1 liegt in einem angegebenen Bereich, der durch die Spalten start und end in definiert wird df_2.

Um diese Aufgabe zu erfüllen, besteht ein Ansatz darin, einen Intervallindex aus den Start- und Endspalten zu erstellen und die geschlossene Option auf beide zu setzen, um inklusive Grenzen sicherzustellen. Mithilfe dieses Intervallindex können wir get_loc verwenden, um das entsprechende Ereignis für jeden Zeitstempel in df_1 abzurufen.

Beispiel:

import pandas as pd

# Input dataframes
df_1 = pd.DataFrame({
    'timestamp': ['2016-05-14 10:54:33', '2016-05-14 10:54:34', '2016-05-14 10:54:35', '2016-05-14 10:54:36', '2016-05-14 10:54:39'],
    'A': [0.020228, 0.057780, 0.098808, 0.158789, 0.038129],
    'B': [0.026572, 0.175499, 0.620986, 1.014819, 2.384590]
})

df_2 = pd.DataFrame({
    'start': ['2016-05-14 10:54:31', '2016-05-14 10:54:34', '2016-05-14 10:54:38'],
    'end': ['2016-05-14 10:54:33', '2016-05-14 10:54:37', '2016-05-14 10:54:42'],
    'event': ['E1', 'E2', 'E3']
})

# Create interval index
df_2.index = pd.IntervalIndex.from_arrays(df_2['start'], df_2['end'], closed='both')

# Join dataframes using get_loc
df_1['event'] = df_1['timestamp'].apply(lambda x: df_2.iloc[df_2.index.get_loc(x)]['event'])

# Output joined dataframe
print(df_1)

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

Das obige ist der detaillierte Inhalt vonWie verbinde ich Pandas-DataFrames basierend auf Zeitstempelbereichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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