【发布时间】:2026-01-24 20:10:02
【问题描述】:
我有以下数据框:
Time A
1 1
2 1
3 1
4 1
5 2
6 2
7 3
8 3
9 2
10 1
11 1
12 1
13 3
14 3
15 3
需要创建一个长度为 3 的滑动窗口,它会随着时间列滑动 2 步,并将一些服装函数应用于 A 列(为了这个示例,我们假设平均值和最大值)
它的 r 等价物是
dat %>% dplyr::mutate(SMA_A=rollapplyr(A, 3, mean ,by = 2,align ="center", partial=TRUE, fill=NA),
Max_A =rollapplyr(A, 3, max ,by=2, align ="center", partial=TRUE,fill=NA)
)
预期输出:
Time A SMA_A Max_A
1 1 1.000000 1
2 1 NA NA
3 1 1.000000 1
4 1 NA NA
5 2 1.666667 2
6 2 NA NA
7 3 2.666667 3
8 3 NA NA
9 2 2.000000 3
10 1 NA NA
11 1 1.000000 1
12 1 NA NA
13 3 2.333333 3
14 3 NA NA
15 3 3.000000 3
或没有 NA
【问题讨论】:
-
你想要
df.set_index('Time').rolling(3)['A'].mean()? -
@Erfan - 有
by = 2所以看起来更复杂 -
你能提供预期的输出吗?
-
@Erfan 对代码进行了编辑
标签: python pandas dataframe window-functions pandasql