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

如何对Pandas DataFrame列迭代执行re.search自动填充Issue行

错误原因
  • 你调用re.search时传入了issues_df.iloc[[1]](返回的是Description整行的Series对象),而非单个字符串,所以触发类型错误
  • 原有赋值逻辑是直接覆盖整行Issue值,不会按列匹配更新,还会导致已匹配的正确值被后续循环覆盖
  • 未处理Description单元格本身为NaN的情况,容易触发额外报错
修正后代码
import pandas as pd
import re

issue_dict = {'human rights':'HR', 'nuclear':'NU', 'sustainable development':'SD'}

# 先将Issue行全部初始化为空值,清除旧值干扰
issues_df.iloc[0] = pd.NA

# 遍历所有决议列
for col_name in issues_df.columns:
    # 单独取当前列的描述文本,转字符串避免空值报错
    desc_content = str(issues_df.loc['描述(Description)', col_name])
    # 遍历关键词字典做匹配
    for keyword, issue_code in issue_dict.items():
        if re.search(rf"(?i){keyword}", desc_content):
            # 匹配到关键词后仅更新当前列的Issue值
            issues_df.loc['问题(Issue)', col_name] = issue_code
            # 仅保留第一个匹配到的编码就保留break,需要叠加多个匹配编码就删除break
            break
逻辑说明
  • 优先按行索引名定位单元格,比硬编码行号的兼容性更强,不会因为后续行顺序调整出错
  • 逐列单独提取对应描述文本传入正则匹配,从根源解决类型错误问题
  • 匹配到关键词后仅修改当前列的Issue单元格,不会影响其他列的结果
  • 新增字符串转换逻辑,即使描述单元格为空也不会触发类型报错
  • 如果需要支持多关键词匹配返回多个编码,删除代码中的break,调整赋值逻辑为多编码拼接即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:36:08