是否有Python pandas函数可提取DataFrame及多Excel中指定描述旁的值?
多Excel文件特定值提取与Pandas数据检索方案
一、提取固定描述右侧的目标值(处理多Excel文件)
可以用pandas结合文件遍历实现,核心逻辑是定位包含目标描述字符串“xxx”的单元格,再提取其同行右侧(或对应位置)的值。
示例代码
import pandas as pd import os # 替换为你的目标描述字符串 target_desc = "xxx" results = [] # 遍历指定文件夹下的所有Excel文件 for file_name in os.listdir("./excel_dir"): if file_name.endswith((".xlsx", ".xls")): file_path = os.path.join("./excel_dir", file_name) # 读取文件内所有工作表 xls = pd.ExcelFile(file_path) for sheet in xls.sheet_names: df = pd.read_excel(xls, sheet_name=sheet) # 遍历每一行每一列找目标描述 for row_idx, row in df.iterrows(): for col_name in df.columns: cell_content = str(row[col_name]) if target_desc in cell_content: # 获取当前列的索引,取同行下一列的值 current_col_idx = df.columns.get_loc(col_name) if current_col_idx + 1 < len(df.columns): target_val = row[df.columns[current_col_idx + 1]] results.append({ "文件名": file_name, "工作表": sheet, "提取值": target_val }) # 转换为DataFrame查看结果 result_df = pd.DataFrame(results) print(result_df)
如果目标值在描述单元格的下一行,只需把target_val的取值改为df.iloc[row_idx+1, current_col_idx]即可。
二、Pandas根据内容检索DataFrame特定值的方法
有多种实用方法,常用的如下:
- 全表模糊匹配:用
df[df.apply(lambda x: x.astype(str).str.contains(target_desc).any(), axis=1)],筛选出任意单元格包含目标字符串的整行数据。 - 精准匹配值:通过布尔索引直接定位,比如
df[df == "目标值"],返回所有匹配该值的单元格(非匹配位置显示NaN)。 - 表达式检索:用
df.query()实现类SQL的查询,例如df.query('列名 == "目标值"'),针对指定列做精准匹配。 - 指定列模糊检索:用
df.loc[df["目标列"].str.contains(target_desc, na=False)],高效筛选目标列中包含指定字符串的行。
检索并提取值示例
import pandas as pd df = pd.read_excel("single_file.xlsx") target_desc = "xxx" # 筛选所有包含目标描述的行 matched_rows = df[df.apply(lambda row: target_desc in str(row.values), axis=1)] # 提取对应右侧的值 for idx, row in matched_rows.iterrows(): for col in df.columns: if target_desc in str(row[col]): col_idx = df.columns.get_loc(col) if col_idx + 1 < len(df.columns): print(f"提取到的值:{row[df.columns[col_idx + 1]]}")
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

