我有一个数据框:
A B C
1/2/2007 np.Nan 6.3 np.Nan
1/3/2007 np.Nan np.Nan 3.2
1/4/2007 np.Nan np.Nan np.Nan
1/5/2007 -999 np.Nan 7.3
1/6/2007 np.Nan -999 np.Nan
1/7/2007 np.Nan np.Nan 3.1
1/8/2007 np.Nan -999 np.Nan
如何获取值为-999的列数?
不是数据框中出现的次数或每列的出现次数,而是具有值的列数?
此处的正确答案为2
,因为A列和B列至少有一次出现-999
,其中C列的出现次数为0
。
答案 0 :(得分:3)
您可以先将整个df与-999进行比较,然后计算无零列的数量。
df.eq(-999).any().sum()
Out[302]: 2
一点解释:
df.eq(-999)给出一个True / False矩阵,表明该元素是否等于-999:
Out[308]:
A B C
1/2/2007 False False False
1/3/2007 False False False
1/4/2007 False False False
1/5/2007 True False False
1/6/2007 False True False
1/7/2007 False False False
1/8/2007 False True False
.any()检查列中的任何元素是否为True,返回:
Out[309]:
A True
B True
C False
dtype: bool
在此示例中,A列和B列为真,因为它们至少有一个Trues。
最后,.sum()计算特鲁斯的数量,(在自然操作中,True会自动转换为1,False为0)