python - pandas 数据框中不重叠的滚动窗口

标签 python pandas dataframe

我熟悉 Pandas 滚动窗口函数,但它们的步长始终为 1。我想在 Pandas 中执行移动聚合函数,但条目不重叠。

在此数据框中:enter image description here

df.rolling(2).min()

将产生:

不适用 519 566 727 1099 12385

但是我想要一个步长为 2 的固定窗口,所以它会产生:

519 727 12385

因为使用固定窗口,所以它应该按该窗口的大小进行步进。

最佳答案

rolling 函数中没有这样的内置参数,但您可以计算常用的滚动函数,然后跳过每 n 行(其中 n= 2 在你的情况下)。

df.rolling(n).min()[n-1::n]

正如您在评论中提到的,这可能会导致许多冗余计算,这些计算将被忽略(特别是如果 n 很大)。 相反,您可以使用以下代码将数据分区(分组)到大小为 n 的容器中:

df.groupby(df.index // n).min()

我没有检查它是否确实更有效,但我相信它应该是。

关于python - pandas 数据框中不重叠的滚动窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595661/

相关文章:

python - 如何在 python 中使用生成器制作嵌套 for 循环?

python - Pandas ,按特定顺序获取元素

python - 如何在 pandas 系列字符串上应用切片

R,数据框操作

python - pandas dataframe中 `.value_counts()`的逆向操作是什么?

python - 如何使用 python pytest 断言 2 个数据帧

python - Pylons 重定向给出 : AttributeError: 'HTTPFound' object has no attribute 'exception'

python - 检查字符串是否有效 MySQL UTF8?

python - 当 python 脚本遇到错误或停止时如何通知自己?

python - 在 Python 中使用 Pandas 重复年度循环