修改后的问题:如何将pandas数据帧传递给函数,然后使用该数据帧而不更改原始/全局版本。
回答:似乎这取决于您正在执行的操作类型,因此在我看来,如果没有发生变化的风险,这是不可能的。请参阅this和this
在我确认之后,我会发布我认为对这种情况的正确处理。
原始问题:
这是我以前曾经问过的事情,但对于我的研究,似乎我得到的结果与惯例相矛盾。
这是我的代码:
xTest = pd.DataFrame({'A' : ['Test']})
def MyFunction():
_xTest=xTest
_xTest['yPred'] = 1
return _xTest
res=MyFunction()
xTest.head()
运行后,xTest.head()显示' yPred'列已附加到其中。 从阅读Python范围,例如下面的URL以及其他地方,我会相信这不应该发生?
答案 0 :(得分:0)
_xTest=xTest
此代码表示xTest
也可以使用_xTest
引用,因此您不仅要更改_xTest
的函数值,还要更改xTest
的值
答案 1 :(得分:0)
好的,我可以告诉传递Pandas对象的正确方法,如果你想完成避免任何全局修改的风险是做一个明确的副本:
解析度= MyFunction的(xTest.copy(深= TRUE))
我在上面发布的问题中的第一个链接是关于范围问题的优秀讨论,第二个链接提供了解决方案。