我有一个pandas列,当它中遇到0时,我想使用上一个值对它进行求和。通过这个例子可以更清楚地看到-
ds = pd.DataFrame([0,1,2,3,4,50,0,1,3,5,55,0,5], columns = ['a'])
print(ds)
a
0 0
1 1
2 2
3 3
4 4
5 50
6 0
7 1
8 3
9 5
10 55
11 0
12 5
输出应为-
a
0 0
1 1
2 2
3 3
4 4
5 50
6 50
7 51
8 53
9 55
10 105
11 105
12 110
可以利用
.diff(-1)
直接获得条纹结束位置(50和55):.diff(-1)
放入.where()
以保留条纹结束元素,同时用0填充其他元素李>cumsum()
,用fill_value=0
将结果向前移动1,并将其添加到原始数据中李>代码:
结果:
尝试使用
shift
然后where
将所有非0屏蔽到NaN
,然后执行cumsum
,因为需要再次添加前一个填充值相关问题 更多 >
编程相关推荐