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

基于Pandas DataFrame按ID统计关联最后关键词的end次数

解决思路

针对每个case_id,我们需要:

  1. 定位该分组内text列最后出现的目标关键词(hire/career)
  2. 检查该关键词出现位置之后的行中,是否存在reason列等于end的记录
  3. 对满足条件的关键词进行计数
实现代码
import pandas as pd

# 从text列提取目标关键词
def get_target_keyword(text_content):
    text_str = str(text_content)
    if 'hire' in text_str:
        return 'hire'
    elif 'career' in text_str:
        return 'career'
    return None

# 预处理:添加关键词标记列
df['target_keyword'] = df['text'].apply(get_target_keyword)

# 初始化计数字典
keyword_count = {'hire': 0, 'career': 0}

# 按case_id分组处理
for _, group in df.groupby('case_id'):
    # 筛选出包含目标关键词的行
    keyword_records = group[group['target_keyword'].notna()]
    if keyword_records.empty:
        continue
    
    # 获取该分组最后出现的关键词
    last_keyword = keyword_records.iloc[-1]['target_keyword']
    # 获取最后关键词行的索引
    last_keyword_pos = keyword_records.iloc[-1].name
    
    # 检查关键词之后是否存在reason为'end'的记录
    has_end_after = (group.loc[group.index > last_keyword_pos, 'reason'] == 'end').any()
    
    if has_end_after:
        keyword_count[last_keyword] += 1

# 转换为结果DataFrame
result_df = pd.DataFrame(list(keyword_count.items()), columns=['keyword', 'count'])
print(result_df)
代码解释
  • 关键词提取:通过自定义函数get_target_keyword识别每行text中的目标关键词,生成辅助列target_keyword
  • 分组处理:按case_id分组后,先过滤出该组内所有含关键词的行,若没有则直接跳过
  • 最后关键词定位:取分组内最后一条含关键词的记录,确定触发关键词
  • end检查:判断该关键词出现位置之后的行中是否存在reason='end'的记录,若存在则对应关键词计数+1
  • 结果输出:将计数字典转换为DataFrame,得到最终统计结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:15:34