pandas和numpy python中的对象和变量分配

时间:2017-05-26 11:36:27

标签: python

我是python的新手。 我不理解pandas在将pd.DataFrame分配给新变量时遵循的原则。 在下面的示例中,我希望a保留其值,并在将新元素添加到b后不会更改。 下面有一个与np.array类似的例子,它展示了预期的行为。 有人可以对此有所了解吗?

谢谢!

<div class="content_center col-md-6">
What I want
</div>

2 个答案:

答案 0 :(得分:1)

执行b=a时,ab都是对完全相同的对象的引用。通过一个名称进行的任何更改都可以通过另一个名称同样显示。

d=c的情况略有不同,因为您之后将d重新分配给np.append()的结果,该结果记录为始终返回一个新对象(而不是修改对象)地点)。从那时起,cd是独立的对象。

答案 1 :(得分:0)

您可以尝试:

b = a.copy()

然后b在修改a时不会改变,因为它们引用了两个不同的对象。

回到问题,a和b引用同一个对象,b.loc[b.index.max() + 1] = [30,'M']只修改对象,因此print(a)print(b)都会发生变化。

当c和d引用同一个对象时,d = np.append(d,[[30,'M']], axis=0)更新d,这意味着现在d引用一个新对象。但是c仍然指的是旧的对象。