计算DataFrame列中所有定义的值,其中pandas中未定义另一列中的相应值

时间:2018-08-16 09:49:30

标签: python pandas dataframe count nan

我正在使用具有两列约束的DataFrame,因此当第一个定义了一个值时,另一个应该也定义了相应的值。我想算一想这种约束不成立的情况。

示例

df = pd.DataFrame({'a': [np.nan, 2, np.nan, 4, 5, 6],'b': [11, 12 , np.nan, 14, 15, np.nan]})

     a    b
0  NaN   11
1    2   12
2  NaN  NaN
3    4   14
4    5   15
5    6  NaN

定义了a列中的值时,也必须定义b列中的对应值。这不适用于索引为5的行,因此这种情况下的结果应为1

2 个答案:

答案 0 :(得分:1)

尝试一下:

len(df.loc[(df.a.notnull()) & (df.b.isnull())])

上面的方法查找所有a不是NaNbNaN的行,而len()只是计算结果数据帧中的行数

答案 1 :(得分:1)

您可以计算布尔序列,然后使用pd.Series.sum

m1 = df['a'].notnull()
m2 = df['b'].isnull()
res = (m1 & m2).sum()

之所以可行,是因为在计算中使用布尔值时,1 / 0分别被认为是True / False