总是使用.copy()在pandas中制作数据帧副本?

时间:2016-03-12 14:06:45

标签: python pandas

我创建了一个数据帧的副本,以便在应用之前在ipython笔记本中测试一些数据转换

datatest = data
datatest.LAST_RENEWAL_CHANNEL.replace(to_replace="Direct.+", value="Direct", inplace=True, regex=True) # combining direct channels
测试后我尝试比较差异

print(datatest.LAST_RENEWAL_CHANNEL.value_counts())
print(data.LAST_RENEWAL_CHANNEL.value_counts())

但两者都有完全相同的结果,显然原始数据已经改变了!

我后来用.copy()修复了这个问题。我的问题是,datatest = data是否只是制作新的数据框?因此,当我在ipython笔记本中重新运行此单元格时,它会影响我的原始data

1 个答案:

答案 0 :(得分:0)

这就是python处理对象的方式。

变量是对存储在存储器中的数据的引用,例如语句x=[1,2,3,4,5]将此列表放入内存并使用x来访问它。如果您再分配y = x,则创建另一个列表引用,因此,如果更改x,则还要更改y:

>>> x = [1,2,3,4,5]
>>> y=x
>>> x[1] = 99
>>> print(y)
[1, 99, 3, 4, 5]

例如,参见copy

上的Python文档