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!