代码之家  ›  专栏  ›  技术社区  ›  Reddspark

将熊猫作为变量传递会改变它

  •  0
  • Reddspark  · 技术社区  · 8 年前

    修改后的问题 :如何将熊猫数据帧传入函数,然后在不更改原始/全局版本的情况下使用该数据帧。

    回答 :这似乎取决于你所采取的行动类型,因此在我看来,不冒改变的风险是不可能的。见 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以及其他地方),我相信这不应该发生?

    Python variable scope approach

    2 回复  |  直到 8 年前
        1
  •  0
  •   Vivek    8 年前

    _xTest=xTest

    此代码表示 xTest 也可以使用 _xTest 所以你不仅在改变 X检验 函数中的值 XTEST 的值。

        2
  •  0
  •   Reddspark    8 年前

    好吧,如果你想完成,我可以告诉你正确的传递熊猫对象的方法,避免全球被修改的任何风险,那就是做一个明确的复制:

    res=myfunction(xtest.copy(deep=true))。