Mengapakah pengubahsuaian Pandas DataFrame kadangkala menjejaskan DataFrame asal?

Linda Hamilton
Lepaskan: 2024-11-08 03:21:01
asal
556 orang telah melayarinya

Why do Pandas DataFrame modifications sometimes affect the original DataFrame?

Memahami Keperluan untuk Penyalinan DataFrame dalam Pandas

Apabila bekerja dengan bingkai data Pandas, pilihan sama ada untuk mencipta salinan a kerangka data boleh mempunyai implikasi yang ketara. Secara lalai, mengindeks kerangka data mengembalikan rujukan kepada struktur data asal. Oleh itu, sebarang pengubahsuaian yang dibuat pada subset akan secara langsung mengubah suai bingkai induk.

Untuk menggambarkan tingkah laku ini, pertimbangkan contoh berikut:

df = pd.DataFrame({'x': [1, 2]})
df_sub = df[0:1]
df_sub.x = -1
print(df)
Salin selepas log masuk

Output:

   x
0 -1
1  2
Salin selepas log masuk

Seperti yang anda boleh perhatikan, mengubah suai nilai subset secara langsung mengubah nilai yang sepadan dalam bingkai data asal.

Dalam situasi yang penting untuk melindungi bingkai data asal daripada pengubahsuaian, penyalinan adalah perlu. Ini boleh dicapai menggunakan kaedah .copy(). Berikut ialah contoh:

df_sub_copy = df[0:1].copy()
df_sub_copy.x = -1
print(df)
Salin selepas log masuk

Output:

   x
0  1
1  2
Salin selepas log masuk

Dalam kes ini, .copy() memastikan bahawa sebarang perubahan yang dibuat kepada df_sub_copy tidak akan menjejaskan df asal.

Adalah penting untuk memahami bahawa tingkah laku ini terpakai kepada salinan dalam sahaja, yang bermaksud keseluruhan data yang dirujuk disalin ke dalam objek baharu. Sebaliknya, salinan cetek mencipta objek baharu yang merujuk data asas yang sama seperti yang asal. Oleh itu, sebarang perubahan yang dibuat kepada salinan cetek juga akan menjejaskan kerangka data asal.

Atas ialah kandungan terperinci Mengapakah pengubahsuaian Pandas DataFrame kadangkala menjejaskan DataFrame asal?. 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