首頁 >後端開發 >Python教學 >為什麼在選擇 Pandas DataFrame 的子集時應該使用 .copy()?

為什麼在選擇 Pandas DataFrame 的子集時應該使用 .copy()?

Linda Hamilton
Linda Hamilton原創
2024-11-09 16:16:02575瀏覽

Why Should I Use .copy() When Selecting Subsets of Pandas DataFrames?

Pandas 中資料幀複製的重要性

場景:

選擇DataFrame 的子集時,很常見到使用.copy() 方法明確複製父DataFrame 的程式碼。問題出現了:為什麼這是必要的?

推理:

Pandas 資料幀的行為與傳統程式語言陣列不同。當索引 pandas DataFrame(例如 my_dataframe[features_list])時,傳回的值不會建立新副本,而是傳回原始 DataFrame 的檢視或參考。對此視圖所做的任何修改都會直接影響原始 DataFrame。

範例:

考慮以下程式碼:

df = pd.DataFrame({'x': [1, 2]})
df_view = df[0:1]  # Returns a view of the first row
df_view['x'] = -1

# Check the original DataFrame
print(df)

輸出:

   x
0 -1
1  2

如您所見,修改df_view 也修改了原始df DataFrame。

解決方案:

為防止此類意外後果,建議在修改 DataFrame 之前使用 .copy() 方法複製它。這可確保副本所做的任何變更都不會影響原始 DataFrame。

修訂後的代碼:

df = pd.DataFrame({'x': [1, 2]})
df_copy = df[0:1].copy()  # Makes a copy of the first row
df_copy['x'] = -1

# Check the original DataFrame
print(df)

輸出:

   x
0  1
1  2

在這種情況下,df保持不變。

資料框複製的好處:

  • 保護原始資料:防止意外修改到父 DataFrame。
  • 資料隔離: 允許對 DataFrame 的不同子集進行獨立操作。
  • 增強效能: 複製允許最佳化透過隔離目前操作不需要的資料。

以上是為什麼在選擇 Pandas DataFrame 的子集時應該使用 .copy()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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