背景:
我想在给定行长度的元素中对 pandas 数据帧进行切片,并对它们执行计算。
pandas.DataFrame.rolling会让我这样做,但似乎只能使用内置函数,例如示例中的 sum() df.rolling(2, win_type='triang').sum()。我还想绘制这些子集(我可以通过切片和一些 For 循环来做到这一点,但它有点慢)。
我发现了什么:
来自 How can I get the source code of a Python function?我了解到我可以使用 pandas.DataFrame.rolling?? 阅读源代码,这会给我这个:
但是尝试从这里深入挖掘,例如使用 rolling?? 似乎是徒劳的:
那么,是否有可能以某种方式引用 pandas.DataFrame.rolling 的底层函数,或者这是它使用 Python 结束的地方?我猜是因为 docs声明 pandas 是用 Cython 或 C 编写的,但我对此非常好奇,所以我也想在这里问一下。
感谢您的任何建议!
请您参考如下方法:
这不是关于如何阅读源代码的答案,而是关于如何解决您提出的问题的答案:
使用apply on rolling .例如,尝试 df.rolling(2, win_type='triang').apply(yourfunc, args=(), kwargs={})
来自文档,yourfunc
Must produce a single value from an ndarray input *args and **kwargs are passed to the function
这是更好的方法,因为如果不是真的需要,你不应该使用 pandas 源代码并在你的代码中复制粘贴和编辑它(有一些错误修复,它可能在一段时间内过时,等等) .在这里,我们可以使用已经实现的自己的功能。
