Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggantikan Nilai Pandas DataFrame Dengan Cekap Berdasarkan Keadaan?

Bagaimana untuk Menggantikan Nilai Pandas DataFrame Dengan Cekap Berdasarkan Keadaan?

Barbara Streisand
Barbara Streisandasal
2024-12-22 09:03:24631semak imbas

How to Efficiently Replace Pandas DataFrame Values Based on a Condition?

Penggantian Bersyarat dalam Pandas DataFrames

Dalam bingkai data Pandas, menggantikan nilai berdasarkan syarat adalah tugas biasa. Pertimbangkan situasi di mana anda perlu menetapkan nilai dalam lajur tertentu kepada sifar jika nilai tersebut melebihi nilai ambang.

Pendekatan Asal:

Satu pendekatan biasa untuk mencapai ini ialah dengan menggunakan pengindeks df[].ix, yang ditamatkan dalam Pandas versi 0.20.0 dan lebih tinggi.

df[df.my_channel > 20000]['my_channel'] = 0

Penyelesaian Alternatif:

Dengan pengenalan pengindeks loc dan iloc, cara yang disyorkan untuk melakukan penggantian bersyarat ialah:

Menggunakan loc Pengindeks:

mask = df['my_channel'] > 20000
df.loc[mask, 'my_channel'] = 0

Pengindeks loc membenarkan pemilihan baris dan lajur berdasarkan topeng boolean. Dalam kes ini, topeng memilih baris di mana df['my_channel'] > 20000, dan baris ini ditetapkan kepada sifar dalam lajur 'my_channel'.

Menggunakan Iloc Indexer:

mask = df['my_channel'] > 20000
df.iloc[mask.index, df.columns.get_loc('my_channel')] = 0

Iloc indexer membenarkan pemilihan berdasarkan indeks integer. Dalam kes ini, indeks topeng digunakan untuk memilih baris dan indeks lajur 'my_channel' digunakan untuk menetapkan nilai kepada sifar.

Nota: Dalam kes khusus ini, menggunakan pengindeks loc disyorkan berbanding pengindeks iloc kerana iloc tidak menyokong pengindeksan boolean pada lajur integer.

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Nilai Pandas DataFrame Dengan Cekap Berdasarkan 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