python pandas 当前某值 往前走N行 包含的某个值 作为新列的值?

问个基础的 pandas 问题

values = [[5.5, 2.5, 1], [2.0, 4.5, 0], [2.5, 5.2, 1],[4.5, 5.8, 0], [4.6, 6.3, 0],[4.1, 6.4, 1],[5.1, 2.3, 0],[5.1, 2.3, 1],[5.1, 2.3, 1],[5.1, 2.3, 0],[5.1, 2.3, 0],[5.1, 2.3, 0],[5.1, 2.3, 0]]
df = pd.DataFrame(values, columns=['col1', 'col2', 'col3'])

    col1  col2  col3
0    5.5   2.5     1
1    2.0   4.5     0
2    2.5   5.2     1
3    4.5   5.8     0
4    4.6   6.3     0
5    4.1   6.4     1
6    5.1   2.3     0
7    5.1   2.3     1
8    5.1   2.3     1
9    5.1   2.3     0
10   5.1   2.3     0
11   5.1   2.3     0
12   5.1   2.3     0

我想要的是 从col3 每个值开始 往前 3行包含1的个数作为对应心里的值 ,最终需要的是

    col1  col2  col3    col4
0    5.5   2.5     1     1
1    2.0   4.5     0     1
2    2.5   5.2     1     2
3    4.5   5.8     0      1
4    4.6   6.3     0      1
5    4.1   6.4     1     1
6    5.1   2.3     0     1
7    5.1   2.3     1      2
8    5.1   2.3     1      2
9    5.1   2.3     0      1
10   5.1   2.3     0      1
11   5.1   2.3     0      0
12   5.1   2.3     0      0

请问怎么做呢? 头有点发昏, 愣是 不晓得怎么计算了。。

阅读 1.5k
1 个回答
df['col4'] = df['col3'].rolling(3, min_periods=1).sum().astype(int)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进