Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggantikan Nilai Pandas DataFrame Melebihi Ambang dengan Sifar dengan Cekap?

Bagaimana untuk Menggantikan Nilai Pandas DataFrame Melebihi Ambang dengan Sifar dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2024-12-17 00:21:25704semak imbas

How to Efficiently Replace Pandas DataFrame Values Exceeding a Threshold with Zero?

Penggantian Bersyarat Panda

Apabila memanipulasi DataFrame, anda mungkin menghadapi keperluan untuk menggantikan nilai yang memenuhi kriteria tertentu. Soalan ini bertujuan untuk menangani cara menggantikan nilai yang melebihi ambang dengan sifar dalam lajur tertentu.

Pendekatan dan Pengehadan Asal

Pendekatan awal cuba menggunakan sintaks df [df.my_channel > 20000].my_channel = 0. Walau bagaimanapun, pendekatan ini menghadapi isu apabila bekerja dalam DataFrame asal, seperti yang diperhatikan oleh pengguna.

Penyelesaian Menggunakan .loc Indexer

Kepada menyelesaikan isu ini, seseorang boleh menggunakan pengindeks .loc, yang disyorkan dalam versi Pandas yang lebih baharu. Sintaks ini membolehkan pemilihan dan pengubahan baris dan lajur yang tepat. Untuk mencapai penggantian yang diingini, anda boleh menggunakan kod berikut:

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

Sebagai alternatif, anda boleh memekatkan kod menjadi satu baris:

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

Penjelasan

Pembolehubah topeng memilih baris yang df.my_channel melebihi 20000. Selepas itu, df.loc[mask, column_name] = 0 menetapkan lajur saluran_saya kepada sifar untuk baris yang topeng itu Benar.

Nota

Adalah penting untuk digunakan pengindeks .loc dalam kes ini, seperti menggunakan .iloc dengan pengindeksan boolean pada jenis integer lajur akan menghasilkan NotImplementedError.

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Nilai Pandas DataFrame Melebihi Ambang dengan Sifar dengan Cekap?. 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