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

Bagaimana untuk Memahami dan Mengendalikan Tetapan PandasWithCopyWarning?

Barbara Streisand
Lepaskan: 2024-12-26 19:26:14
asal
153 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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'
Salin selepas log masuk

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]
Salin selepas log masuk

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']
Salin selepas log masuk

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])
Salin selepas log masuk

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan