我有一个像这样的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()。
我希望你能帮助我。
答案 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