我正在尝试为函数中的数据帧重新编制索引,但是它不起作用。它在功能之外起作用,所以我完全迷失了。这是我在做什么:
根据df1中的索引重新索引df2
功能之外:
df2 = df2.reindex(df1.index)
这个结果就是我想要的,并且可以正常工作。但是,在此功能内:
def reindex_df(a,b):
a = a.reindex(b.index)
其中a = df2
和b = df1
。
这是怎么回事?我已经研究并认为与局部变量和全局变量有关,但是(对此进行了调整)代码仍然无法正常工作。我想念什么????
答案 0 :(得分:0)
比较以下两个示例:
函数替换在参数下的新值:
def f1(a):
a = a + 1
a = 10
print(f'Before: {a}')
f1(a)
print(f'After: {a}')
结果是:
Before: 10
After: 10
,以便 f1 中的替换在该功能之外不可见。
函数返回新值:
def f2(a):
return a + 1
a = 10
print(f'Before: {a}')
a = f2(a)
print(f'After: {a}')
这一次的结果是:
Before: 10
After: 11
因此以相同的方式更改您的功能。它应该返回新 (重新索引)DataFrame,并在调用它时替换结果 在相同的变量下。