Python如何检查列表中子数组的第二个值并筛选空值对应行
需求实现方案
方法1:基于已生成的列表筛选
如果你已经完成了列表转换,直接遍历列表做条件判断即可,推荐用列表推导式实现:
# 基础版:仅匹配空字符串的场景 empty_records = [item for item in dataList if not item[1]]
如果Excel空单元格读取后是NaN而非空字符串,需要兼容空值判断:
import pandas as pd # 兼容版:同时匹配空字符串、NaN、首尾全是空白字符的异常值 empty_records = [item for item in dataList if pd.isna(item[1]) or not str(item[1]).strip()]
方法2:直接在Pandas层面处理(推荐)
不需要先转成列表再筛选,直接基于DataFrame过滤,性能更高,代码更简洁:
import pandas as pd # 原有读取Excel代码不变 df = pd.read_excel('check_counterparties.xlsx', sheet_name = 'counterparties_cdwu', usecols = "A,B", skiprows=4) # 筛选第二列为空的行,直接转成目标格式的列表 empty_records = df[df.iloc[:,1].isna() | (df.iloc[:,1].astype(str).str.strip() == '')].values.tolist()
结果说明
针对你给出的示例数据,执行以上代码后得到的empty_records结果为:[['DAKEMJPMPB', '']]
所有符合条件的行都会以「[第一列值, 第二列值]」的格式返回,完全匹配你的需求。如果需要逐行打印查看,可以加如下代码:
for record in empty_records: print(record)
内容的提问来源于stack exchange,提问作者Bruno Lorena
相关产品推荐
相关产品推荐

