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

如何读取DataFrame的主行与主列,并对单元格值进行字符串搜索

动态定位DataFrame指定值的实现方案

核心思路

通过建立检索关键词和行列索引的映射关系,无需硬编码数据位置,仅通过匹配内容即可定位目标值:

  • 先将参考行(例如标题行)的内容与对应列索引存储为字典映射
  • 再将参考列(例如行标识列)的内容与对应行索引存储为字典映射
  • 匹配目标关键词获取行列索引后即可读取对应值,直接赋值给变量

完整实现代码

import pandas as pd
from openpyxl import load_workbook

# 按需修改配置项
strTotalFile = "替换为你的Excel文件路径.xlsx"
# 你要查找的行标识内容、列标题内容
target_row_label = "待匹配的行标识"
target_col_label = "待匹配的列标题"

wb = load_workbook(strTotalFile, data_only=True)
pd.set_option('display.max_columns', None)

for sheet in wb.sheetnames:
    ws = wb[sheet]
    df = pd.DataFrame(ws.values)

    # 构建列映射:如果你的参考行是原代码的第17行,将下方的0改为17即可
    col_index_map = {str(val).strip(): col_idx 
                    for col_idx, val in df.iloc[0, :].items() 
                    if pd.notna(val)}
    # 构建行映射:如果你的参考列是原代码的第1列,将下方的0改为1即可
    row_index_map = {str(val).strip(): row_idx 
                    for row_idx, val in df.iloc[:, 0].items() 
                    if pd.notna(val)}

    # 定位目标值并赋值
    if target_col_label in col_index_map and target_row_label in row_index_map:
        target_val = df.iloc[row_index_map[target_row_label], col_index_map[target_col_label]]
        # 此处将目标值赋值给你需要的变量即可
        res = target_val
        print(f"工作表【{sheet}】匹配到的目标值:{res}")
    else:
        print(f"工作表【{sheet}】未匹配到指定关键词,请检查内容是否正确")

注意事项

  • 参考行和参考列的索引可根据实际场景自由调整,不需要修改后续逻辑
  • 代码中添加了内容去空格、空值过滤逻辑,避免格式差异导致匹配失败
  • 建议保证参考行、参考列中的检索内容唯一,避免出现匹配覆盖问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:48:01