Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Tidak Menggantikan Nilai DataFrame Berdasarkan Keadaan Berfungsi Secara Terus, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Tidak Menggantikan Nilai DataFrame Berdasarkan Keadaan Berfungsi Secara Terus, dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Linda Hamiltonasal
2024-12-21 00:25:10303semak imbas

Why Doesn't Replacing DataFrame Values Based on a Condition Work Directly, and How Can I Fix It?

Menggantikan Nilai DataFrame Menggunakan Logik Bersyarat

Dalam Panda, manipulasi DataFrame merupakan aspek yang penting. Satu operasi biasa ialah menggantikan nilai berdasarkan keadaan tertentu. Pertimbangkan senario berikut:

Soalan:

Saya mahu menggantikan nilai dalam lajur DataFrame yang melebihi ambang dengan sifar. Saya cuba mencapai ini menggunakan:

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

Walau bagaimanapun, ia nampaknya berfungsi hanya apabila menyalin saluran ke dalam DataFrame baharu. Mengapakah ia tidak berfungsi dengan DataFrame asal?

Jawapan:

Isu ini berkaitan dengan pengindeks yang digunakan. Sebelum Pandas versi 0.20.0, pengindeks .ix biasanya digunakan. Walau bagaimanapun, ia telah ditamatkan. Sebaliknya, gunakan pengindeks .loc atau .iloc.

Untuk menyelesaikan masalah anda, anda boleh menggunakan kod berikut:

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

Kod ini melakukan tindakan berikut:

  1. mask memilih baris di mana df.my_channel > 20000 adalah Benar.
  2. df.loc[mask, column_name] = 0 menetapkan baris yang dipilih dalam lajur_nama_lajur kepada 0.

Sebagai alternatif, anda boleh menggunakan satu pelapik:

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

Perhatikan bahawa dalam kes ini, penggunaan .loc disyorkan untuk .iloc kerana yang terakhir boleh mengakibatkan NotImplementedError.

Atas ialah kandungan terperinci Mengapa Tidak Menggantikan Nilai DataFrame Berdasarkan Keadaan Berfungsi Secara Terus, dan Bagaimana Saya Boleh Membetulkannya?. 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