Semasa menaik taraf Panda daripada 0.11 kepada 0.13.0rc1, pengguna mungkin menghadapi banyak mesej SettingWithCopyWarning. Satu contoh sedemikian ialah:
E:\FinReporter\FM_EXT.py:449: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_index,col_indexer] = value instead quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
SettingWithCopyWarning menandakan tugasan "berantai" yang berpotensi mengelirukan seperti:
df[df['A'] > 2]['B'] = new_val # new_val not set in df
Ini tidak selalu berfungsi sebagai dijangka, terutamanya apabila pilihan pertama mengembalikan salinan. Untuk menyelesaikan isu ini, gunakan:
df.loc[df['A'] > 2, 'B'] = new_val
Dalam coretan kod yang disediakan:
quote_df['TVol'] = quote_df['TVol']/TVOL_SCALE
anda sedang melaksanakan a tugasan berantai bersamaan dengan:
quote_df = quote_df[quote_df['A'] > 2] quote_df['TVol'] = new_val
Corak ini tidak boleh dibezakan daripada contoh negatif dan mencetuskan amaran.
Jika anda yakin tulisan tidak akan menjejaskan bingkai asal, lumpuhkan amaran dengan:
import pandas as pd pd.options.mode.chained_assignment = None # default='warn'
Untuk pemahaman lanjut, rujuk sumber ini:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Tetapan Pandas Dengan Berkesan DenganCopyWarning?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!