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

Adakah `inplace=True` dalam panda Memudaratkan?

DDD
DDDasal
2024-11-25 09:37:16219semak imbas

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()

Berbanding dengan:

temp = df.some_function1()
temp.reset_index(inplace=True)
result = temp.some_function2()
  • 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

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!

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