通过检查之前的行填充空插槽的值

时间:2016-08-03 10:10:55

标签: string python-3.x pandas dataframe empty-list

我有一个像这样的DataFrame:

day  value  
1 HSE  
2 HSE   
3  
4  
5  
6 LSE  
7 LSE  
8  
9  
10  

现在,我想通过检查之前的值来填充空值。所以,我希望3,4,5设置为“fromHSE”和8,9,10“fromLSE”。

我试过这样:

e = "HSE"

for line in df:
    if df['value'] == "":
        if e == "HSE":
            df['value'] = "fromHSE"
        elif e == "LSE":
            df['value'] = "fromLSE"
    elif df['value'] == "HSE":
        e = "HSE"
    elif df['value'] == "LSE":
        e = "LSE"

但后来我得到了错误:

  

ValueError:系列的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

我希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

您可以先将replace空字符串添加到NaN,使用isnull创建掩码,然后使用Series创建新的ffill。最后使用mask添加字符串from

df.value.replace('',np.NaN, inplace=True)
mask = df.value.isnull()
new = df.value.ffill()
print (new.mask(mask, 'from' + new))
0        HSE
1        HSE
2    fromHSE
3    fromHSE
4    fromHSE
5        LSE
6        LSE
7    fromLSE
8    fromLSE
9    fromLSE
Name: value, dtype: object