为什么这个简单的 reindex Panda df 函数不起作用?

Why is this simple reindex Panda df function not working?

我正在尝试在一个函数内重新索引数据帧,但它不起作用。它在函数之外工作,所以我完全迷路了。这是我正在做的事情:

根据 df1 的索引重新索引 df2

函数外:

df2 = df2.reindex(df1.index)

这个结果是我想要的,而且有效。然而,在这个函数中:

def reindex_df(a,b):
    a = a.reindex(b.index)

其中 a = df2b = df1

这是怎么回事?我已经研究并考虑了与局部变量和全局变量有关的事情,但调整了代码(为此)但仍然无法正常工作。我错过了什么????

比较以下 2 个示例:

  1. 函数替换参数下的新值:

    def f1(a):
        a = a + 1
    
    a = 10
    print(f'Before: {a}')
    f1(a)
    print(f'After:  {a}')
    

    结果是:

    Before: 10
    After:  10
    

    因此f1中的替换在该函数外不可见。

  2. 一个函数returning新值:

    def f2(a):
        return a + 1
    
    a = 10
    print(f'Before: {a}')
    a = f2(a)
    print(f'After:  {a}')
    

    这次的结果是:

    Before: 10
    After:  11
    

所以用同样的方法改变你的函数。它应该 return 新的 (重新索引)DataFrame,当你调用它时,替换结果 在同一个变量下。