Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Penggunaan Tugasan Berantai yang Tidak Betul Boleh Menghasilkan Keputusan Yang Tidak Dijangka dalam Panda?
Tugasan Berantai dalam Panda
Apabila bekerja dengan bingkai data dalam Panda, tugasan berantai boleh membawa kepada tingkah laku yang tidak dijangka atau positif palsu, seperti yang ditunjukkan oleh SettingWithCopyWarning. Amaran ini bertujuan untuk memaklumkan pengguna tentang kemungkinan perangkap dengan tugasan berantai.
Cara Tugasan Berantai Berfungsi
Dalam Panda, kebanyakan panggilan kaedah mengembalikan salinan objek. Ini bermakna apabila anda melaksanakan tugasan berantai, seperti df['column'] = df['column'].fillna(...), anda mungkin mengubah suai salinan kerangka data asal dan bukannya kerangka data asal itu sendiri.
Kesan Rantaian dengan .ix(), .iloc(), dan .loc()
Pilihan ix(), iloc(), dan loc () boleh menjejaskan gelagat tugasan berantai:
Amalan Pengekodan Optimum
Untuk mengelakkan potensi isu dengan tugasan berantai, adalah disyorkan untuk menyerahkan hasil operasi anda kepada pembolehubah baharu secara eksplisit. Sebagai contoh, bukannya:
<code class="python">df['amount'] = df['amount'].fillna(...)</code>
Gunakan:
<code class="python">df['amount_updated'] = df['amount'].fillna(...)</code>
Positif Palsu
Sesetengah tugasan berantai mungkin mencetuskan amaran walaupun ia melakukannya tidak mengubah suai kerangka data asal. Dalam kes sedemikian, anda boleh mematikan amaran menggunakan:
<code class="python">pd.set_option('chained_assignment', None)</code>
Contoh
Pertimbangkan kod berikut:
<code class="python">data['amount'] = data.apply(lambda row: function1(row, date, qty), axis=1) data['amount'] = data['amount'].astype(float)</code>
Kod ini boleh meningkatkan SettingWithCopyWarning kerana data['amount'] diberikan kepada dua kali. Untuk membetulkannya, tetapkan hasil operasi pertama kepada pembolehubah baharu:
<code class="python">temp_amount = data.apply(lambda row: function1(row, date, qty), axis=1) data['amount'] = temp_amount.astype(float)</code>
Atas ialah kandungan terperinci Bagaimanakah Penggunaan Tugasan Berantai yang Tidak Betul Boleh Menghasilkan Keputusan Yang Tidak Dijangka dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!