在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()”方法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3