我希望对滑动窗口应用一个函数。我在这里看到的所有答案都是关注于将函数应用于单个行/列,但我想要将我的函数应用于整个窗口。以下是一个简化的示例:
import pandas as pd
data = [ [1,2], [3,4], [3,4], [6,6], [9,1], [11,2] ]
df = pd.DataFrame(columns=list('AB'), data=data)
这是 df
:
A B
0 1 2
1 3 4
2 3 4
3 6 6
4 9 1
5 11 2
取一个函数应用于整个窗口:
df.rolling(3).apply(lambda x: x.shape)
在这个例子中,我希望得到类似于以下内容:
some_name
0 NA
1 NA
2 (3,2)
3 (3,2)
4 (3,2)
5 (3,2)
当然,这个形状只是用作示例,展示了f
将整个窗口作为计算对象,而不仅仅是一行/一列。我尝试使用 rolling
的 axis
关键字以及 apply
的 raw
关键字进行操作,但都没有成功。其他方法 (agg, transform
) 似乎也不能实现。
当然,我可以使用列表推导式来做到这一点。只是想知道有没有更简单/更清晰的方法。