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