【发布时间】:2020-03-12 00:04:27
【问题描述】:
我正在尝试按间隔进行累积总和,即。如果下一个要累加的值为 0,则 cumsum 被重置为零。下面是一个示例,下面是所需的结果。我曾尝试使用 numpy 'convolve' 和 'groupby' 但无法想出一种方法来进行重置,除非创建一个循环遍历所有行的 def。我缺少一个聪明的方法吗?请注意,“x”列中的实数数据是由 0 分隔的实数。
import numpy as np
import pandas as pd
a = pd.DataFrame([[0,0],[1,0],[1,0],[1,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],\
[0,0],[0,0],[0,0],[0,0],[1,0],[1,0],[0,0]], columns=["x","y"])
def patch(k):
k["z"] = k.x.cumsum()
return k
print(patch(a))
当前输出:
x y z
0 0 0 0
1 1 0 1
2 1 0 2
3 1 0 3
4 0 0 3
6 0 0 3
7 0 0 3
9 0 0 3
10 0 0 3
12 0 0 3
13 1 0 4
15 1 0 5
16 0 0 5
期望的输出:
x y z
0 0 0 0
1 1 0 1
2 1 0 2
3 1 0 3
4 0 0 0
6 0 0 0
7 0 0 0
9 0 0 0
10 0 0 0
12 0 0 0
13 1 0 1
15 1 0 2
16 0 0 0
【问题讨论】: