首頁  >  文章  >  後端開發  >  Pandas:從 DataFrame 中選擇何時建立視圖而不是副本?

Pandas:從 DataFrame 中選擇何時建立視圖而不是副本?

Linda Hamilton
Linda Hamilton原創
2024-11-05 00:12:02610瀏覽

Pandas: When Does Selecting from a DataFrame Create a View vs. a Copy?

Pandas:了解生成視圖與副本的規則

識別視圖和副本的混亂

確定Pandas DataFrame 中的選擇結果是視圖還是副本可能會令人困惑。這種混亂主要源自於各種索引操作及其不同的行為。

一般規則

  • 所有 DataFrame 操作本質上都會建立副本。
  • inplace=True 選項(如果可用)允許就地修改。
  • 設定值的索引器(例如 .loc、.iloc、.iat、.at)通常會就地執行操作。
  • 使用索引器從單一資料類型物件取得值通常會產生一個視圖(儘管記憶體佈局會影響此)。
  • 使用索引器從多個資料類型物件取得值總是會產生一個視圖複製。

具體範例

  • 為比較賦值:

    <code class="python">df[df.C <= df.B] = 7654321</code>

    分配此修改了原始DataFrame df,因為索引器.loc 用於就地設定值。
  • 鍊式索引:

    <code class="python">df[df.C <= df.B].loc[:, 'B':'E']</code>

    不鼓勵此操作,因為它可能不可靠。為了避免潛在問題,請改用以下語法:
    <code class="python">df.loc[df.C <= df.B, 'B':'E']</code>

基於查詢修改值

要修改a 中的所有值滿足特定查詢條件的DataFrame,使用loc索引器以查詢條件作為參數。例如:
<code class="python">df.loc[df.C <= df.B, 'E'] = 40</code>

此分配只會變更 df.C 小於或等於 df.B 的行的「E」欄位中的值。

以上是Pandas:從 DataFrame 中選擇何時建立視圖而不是副本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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