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

统计DataFrame行中指定子串的非精确匹配出现次数

实现Pandas DataFrame行级别子串匹配计数功能

核心实现函数

import pandas as pd

def count_row_matches(df: pd.DataFrame, sub_str: str, case: bool = True) -> pd.Series:
    # 逐元素判断是否包含指定子串,非字符串类型、空值默认返回False
    contain_mask = df.astype(str).apply(lambda x: x.str.contains(sub_str, case=case, na=False))
    # 按行求和得到每行匹配次数
    row_match_count = contain_mask.sum(axis=1)
    return row_match_count

使用示例

# 构造示例测试数据
data = {
    "col1": ["abc", "xabc", "def", "xyzabcabczyd", "aaa"],
    "col2": ["abcd", "efg", "abc123", "hij", "bbb"],
    "col3": ["test", "abc", "qqq", "rrr", "abcabc"]
}
df = pd.DataFrame(data)

# 查找子串"abc"的每行匹配次数
row_match_res = count_row_matches(df, "abc")
print("每行匹配次数:\n", row_match_res)
# 统计匹配成功的行总数(匹配次数≥1即算符合要求)
valid_row_num = sum(row_match_res >= 1)
print(f"匹配成功的行总数:{valid_row_num}")

上述示例运行后输出的匹配成功行总数为4,和需求中的示例结果一致。

参数说明

  • df: 输入的Pandas DataFrame对象
  • sub_str: 需要查找的目标子串
  • case: 布尔值,设置匹配时是否区分大小写,默认True区分大小写
  • 返回值:Pandas Series对象,索引和原DataFrame一致,值为对应行的子串匹配次数

注意:默认逻辑下同一单元格内子串多次出现仅算1次匹配,如果需要统计单个单元格内子串出现的总次数,可将代码中的str.contains替换为str.count即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:45:03