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)
输出效果
运行后同一条工单的所有字段会落在同一行,符合预期格式:
| id | so | need qty |
|---|---|---|
| 669 | 253652 | 10 |
| 671 | 118387 | 10 |
内容的提问来源于stack exchange,提问作者JarvisButler290
相关产品推荐
相关产品推荐

