如何检测DataFrame中相邻列空值时C1/C2是否有值
解决方法
首先用pandas构造你提供的示例DataFrame(空值用NaN表示):
import pandas as pd import numpy as np data = { 'ID': ['AA', 'BB', 'CC', 'DD'], 'A1': [1, np.nan, np.nan, 2], 'A2': [3, np.nan, np.nan, 5], 'B1': [7, np.nan, np.nan, np.nan], 'B2': [4, np.nan, np.nan, np.nan], 'C1': [np.nan, np.nan, np.nan, 'A'], 'C2': [np.nan, np.nan, np.nan, 1] } df = pd.DataFrame(data)
接下来按需求逐行判断,关键是给all()和any()加上axis=1参数,让它们按行计算:
- 先判断每行的B1、B2是否全为空:
b_cols_empty = df[['B1', 'B2']].isna().all(axis=1) - 再判断每行的C1、C2是否至少有一个非空:
c_cols_has_value = df[['C1', 'C2']].notna().any(axis=1) - 两个条件取交集,筛选出符合要求的行:
result = df[b_cols_empty & c_cols_has_value]
运行后result就会只保留DD行,和你预期的一致。
如果需要给原DataFrame标记符合条件的行,可以新增一列:
df['is_match'] = b_cols_empty & c_cols_has_value
内容的提问来源于stack exchange,提问作者ApacheOne
相关产品推荐
相关产品推荐

