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

Python 为什么这个简单的reindex Panda df函数不起作用?,python,pandas,python-3.6,Python,Pandas,Python 3.6,我试图在一个函数中重新索引数据帧,但它不起作用。它在功能之外工作,所以我完全迷路了。以下是我正在做的: 基于来自df1的索引重新索引df2 职能之外: def reindex_df(a,b): a = a.reindex(b.index) df2=df2.reindex(df1.index) 这个结果正是我想要的,并且有效。但是,在这一职能范围内: def reindex_df(a,b): a = a.reindex(b.index) 其中a=df2和b=df1 这是怎么回

我试图在一个函数中重新索引数据帧,但它不起作用。它在功能之外工作,所以我完全迷路了。以下是我正在做的:

基于来自df1的索引重新索引df2

职能之外:

def reindex_df(a,b):
    a = a.reindex(b.index)
df2=df2.reindex(df1.index)
这个结果正是我想要的,并且有效。但是,在这一职能范围内:

def reindex_df(a,b):
    a = a.reindex(b.index)
其中
a=df2
b=df1


这是怎么回事?我已经研究并思考了一些与局部变量和全局变量有关的问题,但是(为此)调整了代码,仍然不起作用。我错过了什么

比较以下两个示例:

  • 函数替换参数下的新值:

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

    Before: 10
    After:  10
    
    Before: 10
    After:  11
    
    因此f1中的替换在该函数之外是不可见的

  • 返回新值的函数

    def f2(a):
        return a + 1
    
    a = 10
    print(f'Before: {a}')
    a = f2(a)
    print(f'After:  {a}')
    
    这一次的结果是:

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

    函数末尾是否缺少一个
    return
    语句?