当从父数据帧中选择子数据帧时,我注意到一些程序员使用.copy()方法复制数据帧。比如说,
X=my\u数据帧[功能列表].copy()
…而不是仅仅
X=my\u数据帧[功能列表]
他们为什么要复制数据帧?如果我不复制会发生什么
这扩展了保罗的答案。在Pandas中,索引数据帧将返回对初始数据帧的引用。因此,更改子集将更改初始数据帧。因此,如果您希望确保初始数据帧不应更改,则需要使用副本。考虑下面的代码:
df=DataFrame({'x':[1,2]})
df_sub=df[0:1]
df_sub.x=-1
打印(df)
您将获得:
x
0 -1
1 2
相比之下,以下情况保持不变:
df\u sub\u copy=df[0:1].copy()
df_sub_copy.x=-1