首页 > 解决方案 > 为什么这个简单的重新索引 Panda df 函数不起作用?

问题描述

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

根据来自 df1 的索引重新索引 df2

函数外:

df2 = df2.reindex(df1.index)

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

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

哪里a = df2b = df1

这里发生了什么?我已经研究并认为与局部变量和全局变量有关,但调整了代码(对此)并且仍然无法正常工作。我错过了什么????

标签: pythonpandaspython-3.6

解决方案


比较以下 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. 返回新值的函数:

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

    这次的结果是:

    Before: 10
    After:  11
    

所以以同样的方式改变你的功能。它应该返回新的(重新索引的)DataFrame,并且当您调用它时,将结果替换为同一变量。


推荐阅读