Rumah > pembangunan bahagian belakang > Tutorial Python > Adakah `inplace=True` dalam panda Memudaratkan?

Adakah `inplace=True` dalam panda Memudaratkan?

DDD
Lepaskan: 2024-11-25 09:37:16
asal
243 orang telah melayarinya

Is `inplace=True` in pandas Harmful?

Dalam panda, adakah inplace = Benar dianggap berbahaya, atau tidak?

Ringkasnya, ya, inplace = Benar dianggap berbahaya pada panda. Isu GitHub ini secara eksplisit mencadangkan penamatan hujah inplace api-wide dalam masa terdekat. Berikut ialah beberapa sebab mengapa:

  • Salinan selalunya dibuat juga: Bertentangan dengan namanya, inplace = Benar selalunya tidak menghalang salinan daripada dibuat. Ia (hampir) tidak pernah menawarkan sebarang faedah prestasi. Kebanyakan versi kaedah di tempat dan di luar tempat mencipta salinan data tanpa mengira, dengan versi di tempat memberikan salinan semula secara automatik.
  • Menghalang perantaian kaedah: Inplace = Benar juga menghalang rantaian kaedah. Bandingkan kerja:
result = df.some_function1().reset_index().some_function2()
Salin selepas log masuk

Berbanding dengan:

temp = df.some_function1()
temp.reset_index(inplace=True)
result = temp.some_function2()
Salin selepas log masuk
  • Perangkap yang tidak disengajakan: Memanggil di tempat = True boleh mencetuskan SettingWithCopyWarning , yang boleh menyebabkan yang tidak dijangka tingkah laku:
df = pd.DataFrame({'a': [3, 2, 1], 'b': ['x', 'y', 'z']})

df2 = df[df['a'] > 1]
df2['b'].replace({'x': 'abc'}, inplace=True)
# SettingWithCopyWarning: 
# A value is trying to be set on a copy of a slice from a DataFrame
Salin selepas log masuk

Selain itu, perlu diperhatikan bahawa operasi panda secara lalai ke inplace = Palsu atas sebab tertentu. Ini membenarkan sintaks berantai/berfungsi (cth., df.dropna().rename().sum()), mengelakkan semakan SettingWithCopy yang mahal dan menyediakan gelagat yang konsisten di sebalik tabir.

Oleh itu, pada umumnya disyorkan untuk elakkan menggunakan inplace = Benar melainkan anda mempunyai keperluan khusus untuknya.

Atas ialah kandungan terperinci Adakah `inplace=True` dalam panda Memudaratkan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan