如何读取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
相关产品推荐
相关产品推荐

