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
Lepaskan: 2024-12-15 16:16:15
asal
111 orang telah melayarinya

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
Salin selepas log masuk

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'])
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan