python - 为什么这个简单的重新索引 Panda df 函数不起作用?
问题描述
我正在尝试在函数中重新索引数据帧,但它不起作用。它在函数之外工作,所以我完全迷路了。这就是我正在做的事情:
根据来自 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中的替换在此函数之外不可见。
返回新值的函数:
def f2(a): return a + 1 a = 10 print(f'Before: {a}') a = f2(a) print(f'After: {a}')
这次的结果是:
Before: 10 After: 11
所以以同样的方式改变你的功能。它应该返回新的(重新索引的)DataFrame,并且当您调用它时,将结果替换为同一变量。
推荐阅读
- c++ - 如何用另一个类类型标记一个类?
- javascript - 从对象中获取数组的特定值并对值求和
- javascript - 在 javascript 中通过麦克风发送声音
- elixir - Elixir - 当链接进程被杀死时如何杀死主管?
- java - 当 newDocument(查看 Modals)时无法预处理面板动态数据源以设置默认值
- vbscript - 如何从现有的 Windows 还原点更改“描述”文本?
- python - 从头开始实现 TF-IDF 矢量化器
- flutter - 使用 ExpansionTile 时的布局错误
- c++ - 在不违反严格的混叠规则的情况下调用 FFTW 的就地实数到复数变换
- java - 如何防止在模板中使用环境变量?