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

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

Linda Hamilton
發布: 2024-11-05 00:12:02
原創
687 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板