繁体   English   中英

Python Pandas计算发生特定值的DataFrame列的数量

[英]Python Pandas Count Number of DataFrame Columns in which a Particular Value Occurs

我有一个数据帧:

              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

您可以先将整个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()计算Trues的数量(True在sum运算中自动转换为1,False为0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM