在pandas中获取满足指定条件的值对应的索引、列名及数值的方法
筛选DataFrame符合条件单元格的坐标与值的方法
核心通过stack()将宽表转为带行、列索引的长结构,筛选后直接提取所需信息即可,完整实现代码如下:
import pandas as pd # 示例DataFrame构造,实际使用时替换为你的df即可 df = pd.DataFrame( {"a": [1, 2, 3], "b": [3, 2, 1]}, index=["x", "y", "z"] ) # 1. 堆叠转换为长格式,行索引、列名会转为多级索引 stack_df = df.stack().reset_index() stack_df.columns = ["row_index", "col_name", "value"] # 2. 按条件筛选,此处条件为值大于2,可按需替换为其他数值判断逻辑 filter_df = stack_df[stack_df["value"] > 2] # 3. 整理为(列名, 行索引, 值)的元组列表 result = filter_df[["col_name", "row_index", "value"]].apply(tuple, axis=1).tolist() print(result)
运行后输出结果为:[('a', 'z', 3), ('b', 'x', 3)]
和你预期的返回格式完全匹配,如果你需要其他返回结构,可调整最后一步的转换逻辑,比如直接返回DataFrame格式的筛选结果即可。
内容的提问来源于stack exchange,提问作者Jonny Shanahan
相关产品推荐
相关产品推荐

