Penggantian Nilai Bersyarat dalam Pandas DataFrames
Apabila bekerja dengan Pandas DataFrames, anda mungkin menghadapi situasi di mana anda perlu menukar nilai secara bersyarat berdasarkan syarat yang ditentukan. Soalan ini menggambarkan senario sedemikian, di mana pengguna berusaha untuk menggantikan nilai dalam lajur tertentu yang melebihi nilai ambang dengan sifar.
Pada mulanya, pengguna cuba menggunakan pendekatan berikut:
df[df.my_channel > 20000].my_channel = 0
Bagaimanapun, kaedah ini tidak membuahkan hasil. Ini kerana Pandas telah menghentikan penggunaan pengindeks .ix sejak versi 0.20.0 dan pengguna sebaliknya harus menggunakan pengindeks .loc atau .iloc.
Penyelesaian yang betul melibatkan penggunaan .loc atau .iloc untuk menyasarkan baris atau lajur tertentu dan lakukan penggantian bersyarat. Begini cara anda boleh menggunakan .loc:
mask = df.my_channel > 20000 column_name = 'my_channel' df.loc[mask, column_name] = 0
Sebagai alternatif, anda boleh menyelesaikan tugas yang sama dalam satu baris menggunakan .loc:
df.loc[df.my_channel > 20000, 'my_channel'] = 0
Pembolehubah topeng membantu mengenal pasti baris yang memuaskan syarat df.my_channel > 20000 dan df.loc[mask, column_name] = 0 memperuntukkan 0 kepada baris yang dipilih dalam lajur yang ditentukan.
Nota: Dalam senario khusus ini, disyorkan untuk menggunakan .loc sebaliknya daripada .iloc untuk mengelakkan NotImplementedError, sebagai pengindeksan boolean berasaskan integer dengan .iloc tidak disokong.
Atas ialah kandungan terperinci Bagaimana Menggantikan Nilai Secara Bersyarat dalam Lajur DataFrame Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!