Pandas 視圖與副本產生規則
Pandas 在決定 DataFrame 上的切片操作是否產生視圖或結果時採用特定規則複製。透過了解這些規則,您可以優化資料操作並避免意外行為。
從總是產生副本的操作開始:
- 所有操作,除了那些專門設計用於修改的操作就地 DataFrame,建立副本。
- 只有某些操作支援 inplace=True 參數,此參數允許直接在原始 DataFrame 中進行修改。
接下來,讓我們考慮操作這可能會導致視圖:
- 設定值(例如.loc、.iloc、.iat 和.at)的索引器就地操作,修改原始DataFrame 而不建立副本。
- 從單一資料類型物件檢索資料的索引器通常會建立一個視圖,除非底層記憶體佈局阻止這種最佳化。
- 相反,從多資料類型物件檢索資料的索引器總是會建立一個副本。
關於您的範例:
- df.query('2
- df.iloc[3] = 70 和 df.ix[1, 'B':'E'] = 222 改變 df,因為它們存取單一 dtype 物件並就地設定值。
- df[df.C
- 但是df[df.C
要根據查詢修改特定值,請使用正確的loc 語法:
df.loc[df.C <= df.B, 'B':'E']
遵守這些規則,您可以清楚地了解當Pandas 產生視圖或副本時,確保Python 腳本中高效率的資料操作。
以上是Pandas 什麼時候創建視圖而不是副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!