由于我找不到 DataFrame.interpolation() 的“method”参数的单个方法的声明,所以我在这里问:
pandas 的 DataFrame.interpolation() 与它考虑的行数相关的工作方式是怎样的,它只是 NaN 之前的行和之后的行吗? 或者它是整个 DataFrame(它如何处理 100 万行?)
如果您已经知道在哪里查看,请随时分享源代码的链接(因为https://github.com/pandas-dev/pandas/blob/06d230151e6f18fdb8139d09abf539867a8cd481/pandas/core/frame.py#L10916 不包括“方法”的声明(例如“多项式”)。
我在
core/missing.py
找到了附件。
我的解释是插值要么用
np.interp
完成,要么如果指定了方法并且仅在 scipy 中可用,则用 _interpolate_scipy_wrapper
完成。我无法找到一个函数,但合理的猜测是它是 scipy 的包装器。
if method in NP_METHODS:
# np.interp requires sorted X values, #21037
indexer = np.argsort(indices[valid])
yvalues[invalid] = np.interp(
indices[invalid], indices[valid][indexer], yvalues[valid][indexer]
)
else:
yvalues[invalid] = _interpolate_scipy_wrapper(
indices[valid],
yvalues[valid],
indices[invalid],
method=method,
fill_value=fill_value,
bounds_error=bounds_error,
order=order,
**kwargs,
)
yvalues[preserve_nans] = np.nan