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