Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyertai DataFrames Dengan Cekap Berdasarkan Keadaan Julat dalam Panda?

Bagaimana untuk Menyertai DataFrames Dengan Cekap Berdasarkan Keadaan Julat dalam Panda?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-30 12:18:02788semak imbas

How to Efficiently Join DataFrames Based on Range Conditions in Pandas?

Cara Terbaik untuk Menyertai / Bercantum mengikut Julat dalam Panda

Dalam analisis data, adalah perkara biasa untuk perlu menyertai atau menggabungkan bingkai data berdasarkan keadaan julat tertentu. Satu pendekatan ialah menggunakan sambung silang dengan lajur tiruan, tetapi ini boleh menjadi tidak cekap dan rumit. Penyelesaian yang lebih elegan dan cekap ialah menggunakan penyiaran numpy.

Penyiaran numpy

Penyiaran numpy membolehkan kami melakukan operasi mengikut unsur antara tatasusunan bentuk yang berbeza. Ini boleh dimanfaatkan untuk menentukan nilai dalam bingkai data yang memenuhi syarat julat yang ditentukan.

Persediaan

Pertimbangkan dua bingkai data: A dengan lajur A_id dan A_value, dan B dengan lajur B_id, B_low dan B_high. Kami ingin menyertai A dan B supaya A_value berada di antara B_low dan B_high.

Pelaksanaan

<code class="python">import numpy as np

# Convert dataframes to arrays
a = A.A_value.values
bh = B.B_high.values
bl = B.B_low.values

# Determine matching rows and columns
i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh))

# Join corresponding rows from A and B
joined = pd.concat([
    A.loc[i, :].reset_index(drop=True),
    B.loc[j, :].reset_index(drop=True)
], axis=1)

# Print joined dataframe
print(joined)</code>

Kaedah ini menggunakan perbandingan dan penyiaran mengikut unsur untuk mengenal pasti dengan cekap dan gabungkan baris dari A dan B yang memenuhi syarat julat. Ia elegan dan cekap, mengelakkan keperluan untuk gelung atau lajur tiruan.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai DataFrames Dengan Cekap Berdasarkan Keadaan Julat dalam Panda?. 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