Pandas如何按条件返回符合要求的索引和列名组成的元组列表
实现方案
该需求可以通过两种常用方式实现:
方法1:pandas内置极简实现(无需额外依赖)
核心思路是利用布尔掩码过滤后堆叠数据,自动丢弃空值,直接获取多级索引转为列表即可,代码如下:
# 构造示例DataFrame import pandas as pd df = pd.DataFrame({ 'D': {'A': 0.810032, 'B': 0.752299, 'C': 0.224038}, 'E': {'A': 0.17714, 'B': 0.680405, 'C': 0.769732}, 'F': {'A': 0.942959, 'B': 0.436582, 'C': 0.269791} }) # 核心逻辑:筛选小于0.25的位置,堆叠后取索引 result = list(df[df < 0.25].stack().index) print(result)
运行输出:
[('A', 'E'), ('C', 'D')]
方法2:numpy坐标定位实现(大数据量性能更优)
核心思路是用np.where定位符合条件的行列下标,再匹配对应的索引名和列名,代码如下:
import pandas as pd import numpy as np df = pd.DataFrame({ 'D': {'A': 0.810032, 'B': 0.752299, 'C': 0.224038}, 'E': {'A': 0.17714, 'B': 0.680405, 'C': 0.769732}, 'F': {'A': 0.942959, 'B': 0.436582, 'C': 0.269791} }) mask = df < 0.25 # 获取符合条件的行、列下标 row_idx, col_idx = np.where(mask) # 映射为索引名和列名 result = list(zip(df.index[row_idx], df.columns[col_idx])) print(result)
运行输出和上述方法一致。
内容的提问来源于stack exchange,提问作者DHJ
相关产品推荐
相关产品推荐

