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

Python中用For循环解析XML生成Pandas DataFrame输出异常如何解决

问题根因

  • 全局共用同一个Data列表存储所有字段的取值,导致verID和User_name的内容被混存到同一个列表里,最终两列数据完全一致
  • dic["df{}".format(int)]语法错误:int是Python内置类型关键字,没有替换为循环变量num,所有数据都被覆盖写入同一个字典键,无法生成独立的df1、df2
  • 每append一个值就生成一次DataFrame,逻辑冗余且会重复覆盖存储结果

修复后的实现代码

from pathlib import Path
import xml.etree.ElementTree as ET
import pandas as pd

data_folder = Path("C:/xxx")
List_Object = ['verID','User_name']  # 预定义要提取的字段
# 初始化每个字段对应的独立存储列表
field_data = {field: [] for field in List_Object}

# 遍历所有XML文件
for file in data_folder.rglob('*.xml'):
    tree = ET.parse(file)
    root = tree.getroot()
    # 逐个提取当前XML里的目标字段
    for field in List_Object:
        # 若每个XML对应字段存在多个值,可换成findall循环提取
        elem = root.find(field)
        field_data[field].append(elem.text if elem is not None else None)

# 直接生成合并后的DataFrame,无需单独生成df1、df2再拼接
df_merge = pd.DataFrame(field_data)
# 自定义输出列名,匹配期望格式
df_merge.columns = ['Ver', 'Column_2']
# 导出Excel
df_merge.to_excel('output.xlsx', index=False)

调整说明

  • 为每个预定义字段单独创建存储列表,避免不同字段的取值混存
  • 简化循环逻辑:按文件遍历→逐个提取文件内所有目标字段→存入对应字段的列表,所有文件处理完成后再统一转DataFrame
  • 去掉冗余的字典存df、单独拼接df的步骤,直接生成符合要求的合并表,输出结构和预期完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:54:07