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

如何将XML数据提取为字典并转换为Pandas DataFrame?

我看了你的代码,发现你目前的写法有个关键问题:每次遍历子元素时,thisdict都会被重新赋值,最后只能得到最后一个字段的键值对,根本没法把一个客户的所有信息整合到一个字典里。另外你注释掉的列表添加逻辑位置也不对,应该放在每个客户节点的循环里才行。

这里给你修正后的完整代码,能实现你想要的「XML转字典列表再转DataFrame」的需求:

import pandas as pd
import requests
from xml.etree import ElementTree

# 请求XML数据并解析
response = requests.get("http://mapiuat.vwbeatroute.com/v1/customer/index?key=aQeZx9WpppnbyJmar2ry4Ah0_2WdzWo4")
tree = ElementTree.fromstring(response.content)

# 初始化列表用来存所有客户的字典
customer_records = []

# 遍历每个客户节点(从你的原代码看,tree[1][0]是存放所有客户的节点集合)
for customer in tree[1][0]:
    # 为每个客户创建一个独立的字典
    customer_info = {}
    # 遍历当前客户的所有子字段,把标签和对应文本存入字典
    for field in customer:
        customer_info[field.tag] = field.text
    # 把这个客户的字典加入列表
    customer_records.append(customer_info)

# 把字典列表直接转换成DataFrame
customer_df = pd.DataFrame(customer_records)
# 可以打印看看结果
print(customer_df)

关键调整说明:

  • 把customer_info(也就是你原来的thisdict)的初始化放在每个客户节点的循环内部,这样每个客户都会有自己独立的字典,不会被下一个客户的字段覆盖。
  • 遍历客户的子字段时,是往同一个字典里添加键值对,而不是每次重新创建新字典,这样一个客户的所有信息都会被整合到一起。
  • 每次处理完一个客户的所有字段,就把对应的字典添加到列表里,确保所有客户的数据都被收集完整。
  • 最后用pd.DataFrame()直接把字典列表转成DataFrame,这是Pandas最常用的转换方式之一,非常省心。

如果你的XML结构有更深层次的嵌套子元素,可能需要写递归函数来处理,但从你原代码的遍历逻辑来看,当前的客户节点都是平级的子字段,上面的代码完全够用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:17:52