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

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

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


慕侠2389804
浏览 1505回答 3
3回答

互换的青春

这扩展了保罗的答案。在Pandas中,索引DataFrame会返回对初始DataFrame的引用。因此,更改子集将更改初始DataFrame。因此,如果要确保初始DataFrame不应更改,则需要使用该副本。请考虑以下代码:df = DataFrame({'x': [1,2]})df_sub = df[0:1]df_sub.x = -1print(df)你会得到:x0 -11  2相反,以下叶子df不变:df_sub_copy = df[0:1].copy()df_sub_copy.x = -1

心有法竹

因为如果您不复制,那么即使您将dataFrame分配给其他名称,索引仍然可以在其他地方操作。例如:df2 = dffunc1(df2)func2(df)func1可以通过修改df2来修改df,所以为了避免这种情况:df2 = df.copy()func1(df2)func2(df)

FFIVE

有必要提一下,返回的副本或视图取决于索引的类型。熊猫文档说:返回视图与副本关于何时返回数据视图的规则完全取决于NumPy。每当索引操作中涉及标签数组或布尔向量时,结果将是副本。使用单标签/标量索引和切片,例如df.ix [3:6]或df.ix [:,'A'],将返回视图。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python