我有一个函数,如下所示:
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‘这样的默认值填充一行?
我还有其他函数可以访问上面函数返回的值,它不能有空的dataframe。
例如,当传入的输入参数如下:数据帧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发布于 2019-01-24 06:20:08
很明显,没有选项或方法可以在追加的同时检查值是否为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 rethttps://stackoverflow.com/questions/54333039
复制相似问题