Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa `SettingWithCopyWarning` Berlaku Apabila Mengubah Suai DataFrames yang Diperoleh daripada Subset?

Mengapa `SettingWithCopyWarning` Berlaku Apabila Mengubah Suai DataFrames yang Diperoleh daripada Subset?

Susan Sarandon
Lepaskan: 2024-10-29 12:12:02
asal
725 orang telah melayarinya

Why Does `SettingWithCopyWarning` Occur When Modifying DataFrames Derived from Subsets?

Mencari Penyebab SettingWithCopyWarning

Apabila cuba mengubah suai DataFrame menggunakan .loc[row_indexer, col_indexer] = nilai, nilai "Setting"WithCopyWarning berterusan. Isu ini berpunca daripada mengakses kepingan DataFrame daripada DataFrame lain tanpa menggunakan kaedah .copy().

Penghasilan Semula Ralat Langkah demi Langkah

Pertimbangkan kod berikut:

import pandas as pd

d = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]}
df = pd.DataFrame(data=d)

df['new_column'] = None
df.loc[0, 'new_column'] = 100
Salin selepas log masuk

Pada mulanya, tiada amaran. Walau bagaimanapun, mencipta DataFrame baharu berdasarkan subset df:

new_df = df.loc[df.col1 > 2]
Salin selepas log masuk

dan kemudian cuba mengubah suai DataFrame baharu menggunakan .loc:

new_df.loc[2, 'new_column'] = 100
Salin selepas log masuk

mencetuskan amaran.

Penyelesaian: Menggunakan .copy() untuk Bingkai Data Diperoleh daripada Subset

Untuk menyelesaikan isu ini, sentiasa gunakan kaedah .copy() semasa membuat DataFrame baharu berdasarkan subset bagi DataFrame sedia ada.

new_df_copy = df.loc[df.col1 > 2].copy()
new_df_copy.loc[2, 'new_column'] = 100
Salin selepas log masuk

Dengan menggunakan .copy(), anda mencipta salinan bebas subset, mengelakkan amaran semasa mengubah suai nilai.

Atas ialah kandungan terperinci Mengapa `SettingWithCopyWarning` Berlaku Apabila Mengubah Suai DataFrames yang Diperoleh daripada Subset?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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