在添加数据时如何为丢失的数据添加NaN?

时间:2019-01-23 17:56:32

标签: python pandas append missing-data

我有一个功能,如下所示:

    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

1 个答案:

答案 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