Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memahami dan Mengendalikan Tetapan PandasWithCopyWarning?

Bagaimana untuk Memahami dan Mengendalikan Tetapan PandasWithCopyWarning?

Barbara Streisand
Barbara Streisandasal
2024-12-26 19:26:14137semak imbas

How to Understand and Handle Pandas' SettingWithCopyWarning?

SettingWithCopyWarning: Penjelasan dan Pengendalian dalam Panda

SettingWithCopyWarning, yang diperkenalkan dalam Pandas 0.13.0rc1, memberi amaran kepada pengguna tentang kemungkinan isu apabila menetapkan nilai pada kepingan atau salinan DataFrames. Amaran ini bertujuan untuk mengelakkan kekeliruan dan tingkah laku yang tidak dijangka.

Memahami Amaran

Amaran itu timbul disebabkan oleh "tugasan berantai", di mana nilai ditetapkan pada kepingan atau salinan DataFrame, seperti sebagai:

df[df['A'] > 2]['B'] = new_val  # new_val not set in df

Dalam contoh ini, pilihan pertama (df[df['A'] > 2]) mengembalikan salinan, dan cuba menetapkan 'B' pada salinan ini tidak akan mengemas kini DataFrame 'df' asal. Untuk mengemas kini 'df' dengan betul, gunakan pengakses loc:

df.loc[df['A'] > 2, 'B'] = new_val

Mengendalikan Amaran

1. Mengabaikan Amaran

Jika anda pasti bahawa anda tidak memerlukan perubahan untuk dicerminkan kembali kepada DataFrame asal, anda boleh melumpuhkan amaran:

import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'

2. Menggunakan loc dan iloc

Untuk tugasan pada kepingan atau salinan, gunakan aksesori loc atau iloc, yang membenarkan pengubahsuaian terus DataFrame asal:

df.loc[df['A'] > 2, 'B'] = new_val
df.iloc[2:5, 4] = [1, 8, 8]

3. Mencipta salinan

Jika anda memerlukan rujukan baharu untuk DataFrame anda, buat salinan menggunakan DataFrame.copy() sebelum mengubah suainya:

new_df = df.copy()
new_df['C'] = df['A'] + df['B']

4. Menjana semula DataFrame

Dalam kes khusus anda, bukannya mengubah suai quote_df asal, anda boleh menjana semula DataFrame baharu dengan perubahan yang diingini:

quote_df = pd.read_csv(StringIO(str_of_all), sep=',', names=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefg'))
quote_df.rename(columns={'A':'STK', 'B':'TOpen', ...}, inplace=True)
quote_df['TVol'] = quote_df['TVol'] / TVOL_SCALE
quote_df['TAmt'] = quote_df['TAmt'] / TAMT_SCALE
quote_df['TDate'] = quote_df.TDate.map(lambda x: x[0:4]+x[5:7]+x[8:10])

Atas ialah kandungan terperinci Bagaimana untuk Memahami dan Mengendalikan Tetapan PandasWithCopyWarning?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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