Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menyertai DataFrames dengan Julat Masa Bertindih Menggunakan Pengindeksan Selang?

Bagaimana untuk Menyertai DataFrames dengan Julat Masa Bertindih Menggunakan Pengindeksan Selang?

Barbara Streisand
Barbara Streisandasal
2024-12-15 16:16:15113semak imbas

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

Menyertai Bingkai Data dengan Julat Bertindih Menggunakan Pengindeksan Selang

Diberikan dua bingkai data, df_1 dan df_2, dengan lajur biasa yang mewakili julat masa tarikh, kami menyasarkan untuk menyertai mereka menggunakan syarat tertentu: nilai lajur datetime df_1 mesti berada dalam julat dinyatakan dalam 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

Penyelesaian:

Kita boleh menggunakan pengindeksan selang untuk mencapai ini. Pengindeksan selang membuat tong berdasarkan julat yang ditentukan dalam df_2 dan memberikan label kepada cap masa dalam df_1 yang terdapat dalam tong tersebut.

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'])

Output:

            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

Atas ialah kandungan terperinci Bagaimana untuk Menyertai DataFrames dengan Julat Masa Bertindih Menggunakan Pengindeksan Selang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn