You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas DataFrame中获取满足条件元素的行列名及整数索引的简化方法

纯pandas简洁实现方案

核心逻辑是通过where把不符合条件的元素置为NaN,再用stack自动删除空值得到符合条件的元素集合,最后补充行列整数索引即可,全程无numpy依赖,代码精简易读。

核心代码示例

import pandas as pd

# 替换为你自己的阈值
thres = 10

# 核心实现逻辑
res = df.where(df > thres).stack().reset_index()
# 重命名默认生成的列名
res.columns = ["行名", "列名", "对应元素值"]
# 补充行列整数索引
res["行整数索引"] = res["行名"].apply(df.index.get_loc)
res["列整数索引"] = res["列名"].apply(df.columns.get_loc)

# 提取最终需要的4个字段即可
final_res = res[["行名", "行整数索引", "列名", "列整数索引"]]

方案说明

  • 若不需要保留元素值,可直接删除对应元素值列,不影响结果
  • 兼容所有自定义行列名场景,无论行索引是字符串、数字还是其他类型都可正常运行
  • 性能表现和numpy方案基本持平,中小规模数据下无明显速度差异
  • 大数据量场景下可提前构造行列映射字典替代apply,进一步提升运行效率:
    idx_map = {v:i for i, v in enumerate(df.index)}
    col_map = {v:i for i, v in enumerate(df.columns)}
    res["行整数索引"] = res["行名"].map(idx_map)
    res["列整数索引"] = res["列名"].map(col_map)
    

内容的提问来源于stack exchange,提问作者Antonio Sesto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:15:05