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

Pandas如何判断DataFrame行包含指定字符串而非精确匹配

问题说明

现有用于批量搜索Excel文件内容的函数仅支持精确匹配:只有当单元格内容和传入的搜索字符串完全相等时才会判定命中,无法识别单元格内容包含搜索词的场景。例如在内容为a quick brown fox的单元格中搜索fox时,现有函数无法返回匹配结果。
原实现代码如下:

def search_excel_files(file_list, search_term):
    #list of row indexes that contain the search term
    rows = {}
    for file in file_list:
        df = pd.read_excel("files/" + file)
        for row in df.iterrows():
            if search_term in row[1].values:
                #get row index
                row_index = row[0]
                #add row index to dictionary
                rows = df.iloc[row_index].to_dict()
    return rows
问题根因

原判断逻辑search_term in row[1].values是直接判断搜索词是否为行值序列的成员,仅当某个单元格值完全等于搜索词时才会返回True,不会对单个单元格的内容做子串匹配。
除此之外原代码还有逻辑缺陷:每次匹配到行就直接覆盖rows变量,最终函数只会返回最后一个匹配到的行内容,无法收集所有匹配结果。

修改方法

调整判断逻辑为逐单元格做子串匹配,同时修复结果存储的逻辑缺陷,另外补充非字符串类型值的兼容处理,避免数字、日期、空值导致的匹配报错。
修改后的完整代码:

import pandas as pd

def search_excel_files(file_list, search_term):
    # 按文件名存储所有匹配到的行
    match_rows = {}
    for file in file_list:
        df = pd.read_excel("files/" + file)
        current_file_matches = []
        for row_idx, row_content in df.iterrows():
            # 逐单元格检查是否包含搜索词,空值直接跳过
            is_matched = False
            for cell_val in row_content.values:
                # 跳过空值避免类型错误
                if pd.isna(cell_val):
                    continue
                # 统一转字符串后做子串判断
                if search_term in str(cell_val):
                    is_matched = True
                    break
            if is_matched:
                current_file_matches.append(df.iloc[row_idx].to_dict())
        # 当前文件存在匹配结果时存入总结果
        if current_file_matches:
            match_rows[file] = current_file_matches
    return match_rows

关键修改点

  • 替换原精确匹配逻辑:逐单元格将值转为字符串后,判断搜索词是否为单元格内容的子串,实现模糊包含匹配
  • 修复原结果覆盖问题:按文件维度收集所有匹配到的行,不会丢失历史匹配结果
  • 增加类型兼容:对空值、数字、日期等非字符串类型的单元格值做转义处理,避免运行报错
  • 如果需要忽略大小写匹配,只需要把判断条件改为search_term.lower() in str(cell_val).lower()即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:24:39