如何在 Pandas 中使用 groupby 实现滑动窗口计算?假设我有一个类似以下的数据框:
然后在这些上面:
df = pd.DataFrame({'type': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'data': [1,10,2,4,3,4,5,6]})
df
type data
0 A 1
1 A 10
2 A 2
3 A 4
4 B 3
5 B 4
6 B 5
7 B 6
对于数据框中的每个类型
,我想要确定在一个滑动尺度上在第1行和第3行之间(仅限这些行,忽略第2行)的标准差。 这意味着对于A,我想使用这些行来找到第一个标准偏差:
type data
0 A 1 <----
1 A 10
2 A 2 <----
3 A 4
然后在这些上面:
type data
0 A 1
1 A 10 <----
2 A 2
3 A 4 <----
等等,对于此示例中的其他类型重复上述操作。您可以假设有比4种类型更多的类型和每种类型超过4行。是否有一种方法可以使用 groupby 做到这样的事情?我知道可以使用 iloc
实现这一点,但我希望有一种更优雅和标准的方法,使用 groupby 或其他 pandas 函数。我希望有类似下面的东西可以工作...
df.groupby(df.type).sliding_window(slide=2).std()
编辑:看起来滚动不起作用。我只想要用于std()
的端点,而不是整个窗口。例如,第一个计算应该是std([1, 2])
,因为我们将仅查看索引0和2,而忽略索引1中的值。