如果Python中的值等于0,则替换前一行值(不能使用drop duplicates)

时间:2015-08-06 16:25:39

标签: python

我想检查数据框中列的值是否等于0,如果它是0,我想替换该列的前一行的值。

假设我的数据如下,

a=[0,0,1,2,5,6,0,0,8,9,0,11,0,13]

输出应为

a=[0,0,1,2,5,6,6,6,8,9,9,11,11,13]

我尝试了以下命令,

a = a.replace(0, np.NaN).ffill()

但我得到了,

a=[NaN,NaN,1,2,5,6,6,6,8,9,9,11,11,13]

我无法使用drop_duplicates,因为值会在我的数组中再次出现。所以我需要单独检查以前的值并进行计算。

有人可以帮我吗?

由于

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题。

previousValue = 0
for i in range(len(a)):
    if a[i] == 0:
        a[i] = previousValue
    else:
        previousValue = a[i]

或者更简洁的方式

for i in range(1, len(a)):
    if a[i] == 0:
        a[i] = a[i-1]