给定
A
0 a
1 a
2 a
3 b
4 b
5 a
6 a
7 b
8 a
我想返回一个滚动窗口为 3 的新列来计算 'a' 的出现次数,如下所示,该怎么做?
A Counta
0 a 1
1 a 2
2 a 3
3 b 2
4 b 1
5 a 1
6 a 2
7 b 2
8 a 3
提前致谢!
答案 0 :(得分:0)
IIUC,您可以使用 rolling 如下:
df['count'] = df['A'].eq('a').rolling(window=3, min_periods=1).sum()
print(df)
输出
A count
0 a 1.0
1 a 2.0
2 a 3.0
3 b 2.0
4 b 1.0
5 a 1.0
6 a 2.0
7 b 2.0
8 a 2.0
注意最后一个值应该是 2 而不是 3。
如果您希望输出为整数,请执行:
df['count'] = df['A'].eq('a').rolling(window=3, min_periods=1).sum().astype(int)
答案 1 :(得分:0)
试试rolling
df['A_3_C'] = df.A.eq('a').rolling(3,min_periods=1).sum()
Out[413]:
0 1.0
1 2.0
2 3.0
3 2.0
4 1.0
5 1.0
6 2.0
7 2.0
8 2.0
Name: A, dtype: float64