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

CSV关键词映射DataFrame时索引计数器重复返回10的问题排查

问题原因

该问题由计数器自增逻辑的位置错误导致:
你当前的计数器自增逻辑被放在了「映射后的新关键词不存在于结果字典」的条件分支中,仅当首次出现某个新关键词时才会触发计数器+1。而你的CSV中第9、10、11行的MAP TO字段值均为wars of religion,触发了逻辑漏洞:

  1. 处理第9行(索引9)的旧关键词wars of religion时,新关键词不在字典中,触发新增逻辑,计数器自增为10
  2. 处理第10行(索引10)的旧关键词war of religion时,新关键词已存在于字典中,仅执行页码追加操作,未触发计数器自增,计数器仍为10
  3. 处理第11行(索引11)的旧关键词confessional warfare时,代码仍读取索引为10的行数据,出现匹配错位,最终触发异常逻辑直接将旧关键词写入结果字典。
修复方案
  1. 调整计数器位置:将counter += 1代码移到循环体的最外层,无论新关键词是否已存在于字典,每处理完一行CSV数据就执行一次自增,保证行索引和遍历进度完全对齐。
  2. 更稳妥的方案是放弃手动维护计数器,直接使用pandas自带的行遍历方法处理CSV数据,从根源避免手动计数的错位问题,参考代码如下:
# 遍历DataFrame的每一行,idx为行索引,row为当前行数据
for idx, row in df.iterrows():
    old_keyword = row['WORD']
    mapped_keyword = row['MAP TO']
    print(f"TRYING TO FIND {old_keyword} :")
    print(f"POSITION IN DATAFRAME: {idx}")
    # 以下保留你原有页码提取、结果字典更新的逻辑
  1. 额外优化建议:更新结果字典时仅和映射后的新关键词绑定,不需要关联计数器逻辑,参考逻辑:
# 调用你原有提取页码的方法,拿到当前旧关键词对应的页码列表
page_nums = get_pdf_page_numbers(old_keyword)
if mapped_keyword in index_dict:
    # 新关键词已存在,追加页码后去重排序
    index_dict[mapped_keyword].extend(page_nums)
    index_dict[mapped_keyword] = sorted(list(set(index_dict[mapped_keyword])))
else:
    # 新关键词不存在,新增键值对
    index_dict[mapped_keyword] = page_nums

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:57:02