从父数据帧中选择子数据帧时,我注意到一些程序员使用该.copy()方法制作数据帧的副本。例如,
.copy()
X = my_dataframe[features_list].copy()
…而不仅仅是
X = my_dataframe[features_list]
他们为什么要复制数据框?如果我不复制会怎样?
这扩展了保罗的回答。在 Pandas 中,对 DataFrame 进行索引会返回对初始 DataFrame 的引用。因此,更改子集将更改初始 DataFrame。因此,如果要确保初始 DataFrame 不应该更改,则需要使用副本。考虑以下代码:
df = DataFrame({'x': [1,2]}) df_sub = df[0:1] df_sub.x = -1 print(df)
你会得到:
x 0 -1 1 2
相反,以下保持 df 不变:
df_sub_copy = df[0:1].copy() df_sub_copy.x = -1