无需循环,高效获取Python DataFrame含空字符串的列名
高效查找DataFrame中包含空字符串的列名
首先还原示例DataFrame:
import pandas as pd # 还原题目中的DataFrame,test列内容为包含空元素的列表 data = { 'id': [123, 456], 'type': ['A', 'B'], 'check': ['Soft', 'Hard'], 'company': ['', 'GMC'], 'test': [[1649106820, 100029907158392, '', '', '', '', 123], [1649106812, 100029907158312, '', '', '', '', 456]] } df = pd.DataFrame(data)
无循环高效实现方案
通过pandas矢量化操作+apply组合,分两种场景排查:
- 列中存在单元格本身为空字符串的情况
- 列中存在单元格为列表且包含空字符串元素的情况
执行以下代码即可得到目标集合:
# 1. 筛选单元格本身是空字符串的列 cols_empty_cell = df.columns[(df == '').any()].tolist() # 2. 筛选单元格为列表且包含空字符串的列 cols_empty_in_list = df.columns[ df.apply(lambda col: col.apply(lambda x: isinstance(x, list) and '' in x).any()) ].tolist() # 合并结果并转为集合 result = set(cols_empty_cell + cols_empty_in_list) print(result) # 输出: {'company', 'test'}
说明
- 第一种场景用
(df == '').any()实现矢量化检查,效率远高于显式循环 - 第二种场景通过层级apply实现逐列、逐单元格判断,避免了手动遍历
- 最终结果转为集合,完全匹配题目要求的输出格式
内容的提问来源于stack exchange,提问作者keeplearning
相关产品推荐
相关产品推荐

