Latar Belakang:
Pandas versi 0.13 dan lebih tinggi SettingWithCopyWarning untuk menyerlahkan kemungkinan kekeliruan disebabkan oleh tugasan "berantai". Amaran ini bertujuan untuk menangani senario di mana salinan DataFrame diubah suai, membawa kepada hasil yang tidak dijangka.
Apakah Maksud Amaran?
Amaran menunjukkan bahawa nilai sedang ditetapkan pada salinan kepingan daripada DataFrame. Secara khusus, ia mencadangkan untuk menggantikan baris berikut:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
dengan:
quote_df.loc[row_index, 'TVol'] = value
Cara Membetulkan Amaran:
Penyelesaian yang disediakan oleh amaran adalah untuk menggunakan pengindeksan loc sebaliknya. Walau bagaimanapun, ini mungkin tidak sesuai untuk semua kes penggunaan. Jika anda tidak mengambil berat tentang mengemas kini DataFrame asal, anda boleh melumpuhkan amaran dengan selamat dengan:
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
Penjelasan Lain:
SettingWithCopyWarning menandakan tugasan berantai yang berfungsi tidak selalu berfungsi seperti yang diharapkan. Isu timbul apabila pilihan pertama mengembalikan salinan DataFrame, dan tugasan seterusnya dibuat kepada salinan tersebut. Corak ini boleh menyebabkan kekeliruan kerana perubahan tidak ditunjukkan dalam DataFrame asal.
Dalam kes anda, kod berikut menyebabkan amaran:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Sejak quote_df['TVol' ] ialah salinan, tugasan tidak akan mengubah suai DataFrame asal. Sebaliknya, pertimbangkan untuk menggunakan:
quote_df = quote_df[quote_df['TVol'] > 0] quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
Sumber Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Memahami dan Menyelesaikan Tetapan PandasWithCopyWarning?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!