首頁  >  文章  >  後端開發  >  為什麼 Pandas DataFrame 修改有時會影響原始 DataFrame?

為什麼 Pandas DataFrame 修改有時會影響原始 DataFrame?

Linda Hamilton
Linda Hamilton原創
2024-11-08 03:21:01489瀏覽

Why do Pandas DataFrame modifications sometimes affect the original DataFrame?

了解Pandas 中資料幀複製的需求

使用Pandas 資料幀時,選擇是否建立資料幀可能會產生的副本資料框重大影響。預設情況下,索引資料幀會傳回原始資料結構的參考。因此,對子集進行的任何修改都將直接修改父框架。

為了說明此行為,請考慮以下範例:

df = pd.DataFrame({'x': [1, 2]})
df_sub = df[0:1]
df_sub.x = -1
print(df)

輸出:

   x
0 -1
1  2

如您所觀察到的,修改子集的值會直接改變原始資料幀中的對應值。

在必須保護原始資料幀不被修改的情況下,複製是必要的。這可以使用 .copy() 方法來實作。以下是一個範例:

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

輸出:

   x
0  1
1  2

在這種情況下,.copy() 確保對 df_sub_copy 所做的任何更改都不會影響原始 df。

重要的是要理解這種行為僅適用於深複製,這意味著整個引用的資料都複製到新物件中。相反,淺拷貝會建立一個新對象,該對象引用與原始對象相同的基礎資料。因此,對淺拷貝所做的任何更改也會影響原始資料幀。

以上是為什麼 Pandas DataFrame 修改有時會影響原始 DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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