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

Python-Redmine无法将custom_field值合并到issues对应数据行

问题根源

当前代码异常的核心原因是写入逻辑拆分:

  • 遍历工单时先插入了一行仅包含基础字段的记录
  • 后续遍历到匹配的自定义字段时,又单独调用concat插入了一行仅包含need qty值的新记录
    最终导致同一个工单的数据被拆成两行,自定义字段值错位到空行,和你看到的异常输出一致。另外循环内反复调用pd.concat性能极差,数据量稍大时运行速度会非常慢。
修复代码

调整逻辑为:单条工单的所有字段(基础字段+匹配到的自定义字段)先组装为同一个字典,所有工单数据先存入列表,最后一次性转为DataFrame:

import pandas as pd
# 如未安装python-redmine先执行 pip install python-redmine
from redminelib import Redmine

# 替换为你的Redmine实例配置
redmine = Redmine('你的Redmine站点地址', key='你的API访问密钥')
issues = redmine.issue.filter(project_id=your_project)

record_list = []
for issue in issues:
    # 初始化当前工单的字段字典,自定义字段先设默认空值
    current_row = {
        'id': issue.id,
        'subject': issue.subject,
        'project': issue.project.name if hasattr(issue, 'project') else None,
        'tracker': issue.tracker.name if hasattr(issue, 'tracker') else None,
        'status': issue.status.name if hasattr(issue, 'status') else None,
        'priority': issue.priority.name if hasattr(issue, 'priority') else None,
        'author': issue.author.name if hasattr(issue, 'author') else None,
        'category': issue.category.name if hasattr(issue, 'category') else None,
        'due_date': issue.due_date,
        'so': None,
        'description': issue.description,
        'need qty': None
    }
    # 遍历自定义字段,匹配后直接赋值到当前行字典,不新增记录
    for cf in issue.custom_fields:
        if cf.name == 'Need Qty':
            current_row['need qty'] = cf.value
        # 若so字段也是自定义字段,按实际字段名补充匹配逻辑即可
        if cf.name == 'SO':
            current_row['so'] = cf.value
    record_list.append(current_row)

# 一次性生成DataFrame
df = pd.DataFrame(record_list)
print(df)
输出效果

运行后同一条工单的所有字段会落在同一行,符合预期格式:

idsoneed qty
66925365210
67111838710

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:09:33