小编典典

为什么要在 pandas 中复制数据框

all

从父数据帧中选择子数据帧时,我注意到一些程序员使用该.copy()方法制作数据帧的副本。例如,

X = my_dataframe[features_list].copy()

…而不仅仅是

X = my_dataframe[features_list]

他们为什么要复制数据框?如果我不复制会怎样?


阅读 80

收藏
2022-04-24

共1个答案

小编典典

这扩展了保罗的回答。在 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
2022-04-24