【发布时间】:2021-09-09 02:34:21
【问题描述】:
我有以下代码按列滚动大小为 3 的窗口(即向下,如图中绿色所示)。但是,我希望窗口按行滚动(即向右滚动,如图中蓝色所示)。
window_size = 3
numbers_series = X #X is my dataframe
windows = numbers_series.rolling(window_size)
moving_averages = windows.mean()
moving_averages_list = moving_averages.values.tolist()
without_nans = moving_averages[window_size - 1:]
print(without_nans)
但这不是我想要的——我希望它能够按行显示窗口的平均值。我该如何实现这一目标?
编辑: 在编辑上面的代码以在滚动函数中包含axis = 1之后,这是我得到的输出:
我不确定上面的 520.67、635.33 等值是如何计算的。我期待以下(第一个单元格:788 + 43 + 345)/3 = 392 等...):
【问题讨论】:
-
回复您的编辑:即使您切换到
axis=1,这条线without_nans = moving_averages[window_size - 1:]仍在逐行删除。您现在需要删除列:without_nans = moving_averages[:, window_size - 1:](注意:s)。 -
...如果您要计算最后一张图片中的第三行,您会看到 520.67、635.33 等来自哪里...
-
正如下面的 cmets 中提到的,您可以传递
min_periods=1以便即使在缺少与窗口大小相关的数据时也可以计算均值。 -
知道了,非常感谢!
标签: python pandas window rolling-computation