為什麼在選擇子集時應該始終複製 Pandas DataFrame?

Barbara Streisand
發布: 2024-11-08 11:43:01
原創
544 人瀏覽過

Why Should You Always Copy Pandas DataFrames When Selecting Subsets?

理解Pandas 中資料框複製的重要性

在Pandas 中,選擇資料框的一部分時,通常的做法是使用'.copy() ' 方法建立原始資料幀的副本。這種方法確保子集所做的任何變更都不會影響父資料框。

為什麼要複製?

預設情況下,索引資料框會傳回原始資料框的視圖,而不是副本。這意味著對子集所做的任何修改都將直接影響父資料框。為了保持父資料框的完整性,必須使用“.copy()”方法建立副本。

不複製的後果

考慮以下程式碼片段:

df = pd.DataFrame({'x': [1, 2]})
df_sub = df.iloc[0:1]
df_sub.x = -1
登入後複製

在此範例中,df_sub 是 df 的視圖。因此,將df_sub.x 設為-1 也會修改df.x:

print(df)
   x
0 -1
1  2
登入後複製

複製的好處

複製資料框可確保父資料框保持不變。當對一個資料框執行多個操作時,這一點尤其重要,並且保留原始資料以供以後分析或比較至關重要。

df_sub_copy = df.iloc[0:1].copy()
df_sub_copy.x = -1

print(df)
   x
0  1
1  2
登入後複製

在此修改後的程式碼片段中,df_sub_copy 是 df 的副本。因此,更改 df_sub_copy.x 對 df 沒有影響。

注意: 需要注意的是,在較新版本的 Pandas 中,資料幀索引的行為已發生變化。在 Pandas 1.0 及更早版本中,索引資料框預設回傳一個副本。然而,在 Pandas 1.1 及更高版本中,索引會傳回一個視圖。為了確保跨版本的行為一致,建議在建立資料幀子集時始終使用“.copy()”方法。

以上是為什麼在選擇子集時應該始終複製 Pandas DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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