Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Melaksanakan Gabungan Berasaskan Julat dengan Cekap dalam Panda?
Mengoptimumkan Cantuman Berasaskan Julat dalam Panda
Apabila bekerja dengan bingkai data, selalunya perlu melakukan cantuman berdasarkan keadaan julat. Pendekatan biasa dalam Pandas ialah membuat lajur tiruan, menyertainya dan menapis baris yang tidak diperlukan. Walau bagaimanapun, penyelesaian ini boleh menjadi mahal dari segi pengiraan, terutamanya untuk set data yang besar.
Nasib baik, terdapat cara yang lebih cekap dan elegan untuk mencapai gabungan berasaskan julat dalam Pandas.
Menggunakan Penyiaran numpy
Kaedah yang paling mudah ialah memanfaatkan penyiaran numpy. Ia melibatkan penukaran bingkai data Pandas kepada tatasusunan numpy dan menggunakan operasi boolean untuk mengenal pasti baris yang sepadan.
<code class="python">import numpy as np a = A.A_value.values bh = B.B_high.values bl = B.B_low.values i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh)) pd.concat([ A.loc[i, :].reset_index(drop=True), B.loc[j, :].reset_index(drop=True) ], axis=1)</code>
Pendekatan ini amat cekap kerana ia mengelakkan lelaran baris yang mahal.
Melanjutkan ke Kiri Menyertai
Untuk melanjutkan penyelesaian ini kepada gabungan kiri, kami boleh menambahkan baris yang tinggal daripada bingkai data A yang tidak sepadan dengan mana-mana baris dalam bingkai data B.
<code class="python">pd.concat([ A.loc[i, :].reset_index(drop=True), B.loc[j, :].reset_index(drop=True) ], axis=1).append( A[~np.in1d(np.arange(len(A)), np.unique(i))], ignore_index=True, sort=False )</code>
Ini memastikan semua baris daripada bingkai data A disertakan dalam hasil, walaupun baris tersebut tidak mempunyai baris yang sepadan dalam bingkai data B.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Gabungan Berasaskan Julat dengan Cekap dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!