熊猫滚动条件计数字符串

时间:2021-01-05 16:48:19

标签: python pandas

给定

   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

提前致谢!

2 个答案:

答案 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
相关问题