Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menapis Pandas DataFrame atau Siri dengan Cekap dengan Pelbagai Keadaan?

Bagaimana untuk Menapis Pandas DataFrame atau Siri dengan Cekap dengan Pelbagai Keadaan?

DDD
DDDasal
2024-10-20 11:56:02370semak imbas

How to Efficiently Filter Pandas DataFrame or Series with Multiple Conditions?

Menapis DataFrame atau Siri Panda dengan Cekap dengan Pelbagai Keadaan

Panda menyediakan beberapa kaedah untuk menapis data, termasuk indeks semula(), apply(), dan map() . Walau bagaimanapun, apabila menggunakan berbilang penapis, kecekapan menjadi kebimbangan.

Untuk penapisan yang dioptimumkan, pertimbangkan untuk menggunakan pengindeksan boolean. Kedua-dua Pandas dan Numpy menyokong pengindeksan boolean, yang beroperasi secara langsung pada tatasusunan data asas tanpa membuat salinan yang tidak diperlukan.

Berikut ialah contoh pengindeksan boolean:

<code class="python">df.loc[df['col1'] >= 1, 'col1']</code>

Ungkapan ini mengembalikan Siri Pandas yang mengandungi hanya baris yang nilai dalam lajur 'col1' lebih besar daripada atau sama dengan 1.

Untuk menggunakan berbilang penapis, gunakan operator logik '&' (AND) dan '|' (ATAU). Contohnya:

<code class="python">df[(df['col1'] >= 1) &amp; (df['col1'] <=1 )]</code>

Ungkapan ini mengembalikan DataFrame yang mengandungi hanya baris dengan nilai dalam lajur 'col1' antara 1 dan 1 termasuk.

Untuk fungsi pembantu, pertimbangkan untuk menentukan fungsi yang ambil DataFrame dan kembalikan Siri Boolean, membolehkan anda menggabungkan berbilang penapis menggunakan operator logik.

<code class="python">def b(x, col, op, n):
    return op(x[col],n)

def f(x, *b):
    return x[(np.logical_and(*b))]</code>

Pandas 0.13 memperkenalkan kaedah query(), yang menyediakan cara yang lebih cekap untuk menyatakan keadaan penapisan yang kompleks. Dengan mengandaikan pengecam lajur yang sah, kod berikut menapis DataFrame df berdasarkan berbilang syarat:

<code class="python">df.query('col1 <= 1 &amp; 1 <= col1')</code>

Ringkasnya, pengindeksan boolean menawarkan kaedah yang cekap untuk menggunakan berbilang penapis pada Pandas DataFrames atau Series tanpa membuat salinan yang tidak diperlukan. Gunakan operator logik dan fungsi pembantu untuk menggabungkan berbilang penapis untuk kefungsian lanjutan.

Atas ialah kandungan terperinci Bagaimana untuk Menapis Pandas DataFrame atau Siri dengan Cekap dengan Pelbagai Keadaan?. 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