为什么这个简单的 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 = df2
和 b = df1
。
这是怎么回事?我已经研究并考虑了与局部变量和全局变量有关的事情,但调整了代码(为此)但仍然无法正常工作。我错过了什么????
比较以下 2 个示例:
函数替换参数下的新值:
def f1(a):
a = a + 1
a = 10
print(f'Before: {a}')
f1(a)
print(f'After: {a}')
结果是:
Before: 10
After: 10
因此f1中的替换在该函数外不可见。
一个函数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,当你调用它时,替换结果
在同一个变量下。
我正在尝试在一个函数内重新索引数据帧,但它不起作用。它在函数之外工作,所以我完全迷路了。这是我正在做的事情:
根据 df1 的索引重新索引 df2
函数外:
df2 = df2.reindex(df1.index)
这个结果是我想要的,而且有效。然而,在这个函数中:
def reindex_df(a,b):
a = a.reindex(b.index)
其中 a = df2
和 b = df1
。
这是怎么回事?我已经研究并考虑了与局部变量和全局变量有关的事情,但调整了代码(为此)但仍然无法正常工作。我错过了什么????
比较以下 2 个示例:
函数替换参数下的新值:
def f1(a): a = a + 1 a = 10 print(f'Before: {a}') f1(a) print(f'After: {a}')
结果是:
Before: 10 After: 10
因此f1中的替换在该函数外不可见。
一个函数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,当你调用它时,替换结果 在同一个变量下。