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
Lepaskan: 2024-12-21 00:25:10
asal
270 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan