为什么这个简单的重新编制索引熊猫df函数不起作用?

时间:2019-12-14 18:13:22

标签: python pandas python-3.6

我正在尝试为函数中的数据帧重新编制索引,但是它不起作用。它在功能之外起作用,所以我完全迷失了。这是我在做什么:

根据df1中的索引重新索引df2

功能之外:

df2 = df2.reindex(df1.index)

这个结果就是我想要的,并且可以正常工作。但是,在此功能内:

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

其中a = df2b = df1

这是怎么回事?我已经研究并认为与局部变量和全局变量有关,但是(对此进行了调整)代码仍然无法正常工作。我想念什么????

1 个答案:

答案 0 :(得分:0)

比较以下两个示例:

  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. 函数返回新值:

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

    这一次的结果是:

    Before: 10
    After:  11
    

因此以相同的方式更改您的功能。它应该返回新 (重新索引)DataFrame,并在调用它时替换结果 在相同的变量下。