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

如何将DataFrame中的姓名与匹配到的段落ID关联?

解决方法

可以通过遍历eldf中的姓名,在dfrule中筛选出包含对应姓名的段落并提取ID,最终将姓名与段落ID关联生成目标结果。

通用实现(支持一个姓名对应多个段落ID)

import pandas as pd

# 初始化结果存储列表
match_results = []

# 遍历eldf的每一条姓名记录
for _, name in eldf['Name'].items():
    # 筛选dfrule中包含当前姓名的段落,提取对应的id
    matched_ids = dfrule[dfrule['Paragraphs'].str.contains(name, na=False)]['id'].tolist()
    # 若存在匹配,将姓名与每个ID一一对应存入结果
    if matched_ids:
        for pid in matched_ids:
            match_results.append({'Name': name, 'Paragraph id': pid})

# 转换为目标DataFrame
result_df = pd.DataFrame(match_results)

代码说明

  • 使用str.contains检查段落中是否包含目标姓名,na=False避免空值引发的异常
  • 支持一个姓名出现在多个段落的场景,每个匹配的ID都会与姓名生成一条关联记录
  • 最终的result_df会清晰展示姓名与对应段落ID的映射关系

简化版(适用于单个姓名仅对应一个段落的场景)

如果可以确保每个姓名只会出现在一个段落中,可使用更简洁的写法:

def fetch_paragraph_id(name):
    matched_row = dfrule[dfrule['Paragraphs'].str.contains(name, na=False)]
    return matched_row['id'].iloc[0] if not matched_row.empty else None

# 给eldf添加匹配的段落ID列
eldf['Paragraph id'] = eldf['Name'].apply(fetch_paragraph_id)
# 过滤无匹配结果的行
result_df = eldf.dropna(subset=['Paragraph id'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 02:12:37