首頁 >後端開發 >Python教學 >pandas 中的 `inplace=True` 有害嗎?

pandas 中的 `inplace=True` 有害嗎?

DDD
DDD原創
2024-11-25 09:37:16239瀏覽

Is `inplace=True` in pandas Harmful?

在pandas中,inplace = True被認為是有害的,還是沒有?

總之,是的,inplace = True被認為是有害的對大熊貓有害。此 GitHub 問題明確建議在不久的將來在 api 範圍內棄用 inplace 參數。以下是一些原因:

  • 無論如何都會建立副本:與它的名稱相反,inplace = True 通常不會阻止建立副本。它(幾乎)從不提供任何性能優勢。大多數就地和異地版本的方法都會建立資料的副本,而就地版本會自動將副本分配回來。
  • 阻礙方法連結: Inplace = True 也會阻礙方法連結。比較以下的工作:
result = df.some_function1().reset_index().some_function2()

相對於:

temp = df.some_function1()
temp.reset_index(inplace=True)
result = temp.some_function2()
  • 意外的陷阱:呼叫 inplace = True 可以觸發SetSetWting ,這可能會導致意外的行為:
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

此外,值得注意的是,pandas 操作預設為 inplace = False 是有原因的。這允許鍊式/函數式語法(例如,df.dropna().rename().sum()),避免昂貴的SettingWithCopy檢查,並在幕後提供一致的行為。

因此,通常建議避免使用 inplace = True 除非你有特定的需求。

以上是pandas 中的 `inplace=True` 有害嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn