我有一个功能,如下所示:
def fsheet_DCOP(s,j,k,l):
ret=pd.DataFrame([])
j=j[j[3].str.contains(s,na=False)]
for i in k:
ret=ret.append(j[j[5] == i])
ret=ret[ret[7]==l]
ret=ret[:1]
return ret
有时在传递的数据框中,在第5列或第7列中找不到匹配项。
在这种情况下,如何用NaN值或默认值(例如“ 0”)填充行?
我还有其他函数可以访问上述函数返回的值,并且不能有空的数据框。
例如,当传递的输入参数如下时: 数据帧j是
3 5 7 9
0 red sq side 100
1 blue ci rad 4
2 green re lb 43
3 red ci side 53
4 blue sq side 2.1
5 red sq side 1.1
s='red'
k='sq'
l='side'
它将返回ret作为
print(fsheet_DCOP(s,j,k,l))
9
0 100
5 1.1
但是当
s ='黄色'
在数据框j的第3列中黄色不匹配,因此它将返回一个空数据框。 取而代之的是,每当没有匹配项时如何添加0? 这样
print(fsheet_DCOP(s,j,k,l))
9
0 0
5 0
答案 0 :(得分:0)
很明显,没有任何选项或方法可以在追加时检查该值是否为null。 所以,这是我的解决方法: 在函数返回ret变量之前,添加检查ret是否为空,并用一些NaN值填充它。
import numpy as np
.
.
.
def fsheet_DCOP(s,j,k,l):
.
.
.
if(ret.empty):
ret=pd.DataFrame(np.nan, index=[0], columns=[0,24])
return ret