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

如何从单行panda df中检索值等于指定值的对应列名

检索单行DataFrame中指定值对应列名的实现方法

针对仅1行、1700列的DataFrame场景,不需要做全表扫描,直接提取唯一行做判断即可,以下是可直接复用的方案:

最简写法(确定目标值一定存在时用)

题目明确值10一定存在于某一列,直接用布尔索引即可,运行效率最高:

# 取df的第一行(位置索引为0),匹配值等于10的列
target_column_name = df.columns[df.iloc[0] == 10][0]

逻辑说明:

  • df.iloc[0]会提取第一行的所有值,返回索引为原列名的Series结构
  • df.iloc[0] == 10会逐列判断值是否等于10,返回与列等长的布尔序列
  • 用布尔序列索引df.columns即可筛选出匹配的列名,因为确定有且仅有一个匹配值,直接取索引0的结果即可

鲁棒性写法(不确定目标值是否存在时用)

如果后续场景变化可能出现值不存在的情况,可以先转列表做判空,避免索引越界报错:

match_columns = df.columns[df.iloc[0] == 10].tolist()
if match_columns:
    target_column_name = match_columns[0]
    print(f"匹配到的列名为:{target_column_name}")
else:
    print("当前行中不存在值为10的列")

等价写法

用pandas内置的等值判断方法eq(),和第一种写法逻辑完全一致,可读性更强:

target_column_name = df.columns[df.iloc[0].eq(10)][0]

针对1700列的规模,以上写法的运行耗时都在毫秒级,完全不需要额外做性能优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:15:48