Python 计算DataFrame列中所有已定义的值,其中另一列中的对应值在数据框中未定义

Python 计算DataFrame列中所有已定义的值,其中另一列中的对应值在数据框中未定义,python,pandas,dataframe,count,nan,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

我正在使用带有两列约束的
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

尝试以下操作:

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

上面查找
a
不是
NaN
b
NaN
的所有行,并且
len()
只计算结果数据帧中的行数。

您可以计算布尔级数,然后使用
pd.series.sum

m1 = df['a'].notnull()
m2 = df['b'].isnull()
res = (m1 & m2).sum()
这是因为在计算中使用布尔值时,对于
/
分别被视为
1
/
0