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

如何统计句子中匹配指定词列表的单词总数并存入sum变量

实现方案

你可以用Pandas处理该结构化数据集,按以下步骤实现需求:

  • 预处理b列:如果你的b列存储的是带单引号的字符串(和示例格式一致),先将其拆分为由纯目标词组成的列表;如果b列本身已经是列表格式可跳过这步
  • 逐行统计匹配次数:对每一行的sentence文本,统计所有属于对应b列表的单词总出现次数,结果存入sum列即可。统计时建议用正则单词边界做匹配,避免把长单词中包含的目标子串误统计为命中。

代码示例

import pandas as pd
import re

# 读取/构造数据集,此处用你提供的示例数据做演示
df = pd.DataFrame({
    'sentence': ['i like coffee better than tea because coffee can make me stay happy'],
    'b': ["'coffee', 'tea'"]
})

# 预处理b列:将带引号的字符串转换为目标词列表
df['b'] = df['b'].apply(lambda x: [item.strip(" '") for item in x.split(',')])

# 定义单行文本统计函数
def calc_sum(row):
    content = row['sentence']
    # 若需要不区分大小写匹配,就打开下面这行注释
    # content = content.lower()
    target_list = row['b']
    count = 0
    for word in target_list:
        # \b 匹配单词边界,避免子串误匹配,比如不会把'coffeemaker'里的'coffee'算入统计
        count += len(re.findall(rf'\b{re.escape(word)}\b', content))
    return count

# 生成sum列
df['sum'] = df.apply(calc_sum, axis=1)

运行上述代码后,示例数据对应的sum值为3,和你期望的输出效果完全一致。

如果你不需要做严格的整词匹配,只想统计子串出现次数,可以把正则匹配的部分替换为content.count(word),但这种方式会出现子串误判的问题,优先推荐用正则整词匹配的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:39:16