如何在Pandas DataFrame中查找指定元素对应的行号和列名
实现方案
方案1:使用numpy.where实现(性能最优,适合大数据量)
核心逻辑是先通过布尔掩码匹配所有值为False的位置,再将位置映射为行号和列名:
import pandas as pd import numpy as np # 示例DataFrame构造 df = pd.DataFrame({ 'A': [True, True, False], 'B': [True, True, True], 'C': [False, True, True] }) # 匹配所有False值的位置坐标 row_idx, col_idx = np.where(df.eq(False)) # 组装为(行号, 列名)格式的结果 res = list(zip(row_idx, df.columns[col_idx])) print(res)
运行输出:
[(0, 'C'), (2, 'A')]
方案2:Pandas原生stack实现(写法简洁,适合小数据量)
通过堆叠列转为多级索引Series后直接筛选,无需引入numpy依赖:
res = df.stack()[lambda x: ~x].index.tolist() print(res)
运行输出和方案1完全一致。
内容的提问来源于stack exchange,提问作者Hamouza
相关产品推荐
相关产品推荐

