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

如何解析XML指定标签字段并生成pandas DataFrame

实现方案

不需要手写复杂的多层for循环逐标签爬取,两种方法都可以快速实现需求,优先推荐第一种pandas原生方法,代码最简洁。


方法1:用pandas内置read_xml快速读取(推荐)

pandas自带XML解析能力,只需要指定节点的XPath路径,就能直接把节点内容读成DataFrame,对于嵌套的二级子节点单独读取一次再合并即可。
首先确保你已经安装必要依赖:
pip install pandas lxml

完整实现代码:

import pandas as pd

# 配置项,把这里换成你自己的XML文件路径,或者直接传入XML字符串
xml_source = "your_file.xml"

# 先读取crewMember一级节点下的直接字段
crew_base = pd.read_xml(
    xml_source,
    xpath=".//crewMember",
    elems_only=True
)
# 再读取flightQualification子节点下的字段
crew_qual = pd.read_xml(
    xml_source,
    xpath=".//crewMember/flightQualification",
    elems_only=True
)

# 合并整理为目标表结构,同时处理姓名首字母大写、字段类型转换
result = pd.DataFrame({
    "ID": crew_base["id"].astype(int),
    "firstname": crew_base["firstName"].str.capitalize(),
    "lastname": crew_base["lastName"].str.capitalize(),
    "isVaccinated": crew_qual["isVaccinated"].map({"true": True, "false": False})
})

运行后输出的result完全匹配你需要的表结构:

IDfirstnamelastnameisVaccinated
12345JohnDoeTrue
22222JaneDoeTrue

如果你的XML不是本地文件,是已经加载到内存的字符串,直接把xml_source换成对应的字符串变量即可,不需要额外修改其他逻辑。


方法2:用标准库xml.etree.ElementTree遍历实现(灵活度更高)

如果你后续需要加复杂的字段判断、清洗逻辑,可以用Python标准库的XML解析模块遍历节点,不需要额外安装第三方包,逻辑也很简单:

import xml.etree.ElementTree as ET
import pandas as pd

tree = ET.parse("your_file.xml")
root = tree.getroot()
data_list = []

# 遍历所有crewMember节点
for member in root.findall(".//crewMember"):
    data_list.append({
        "ID": int(member.findtext("id")),
        "firstname": member.findtext("firstName").capitalize(),
        "lastname": member.findtext("lastName").capitalize(),
        # 直接用路径定位二级子节点,不需要多层循环嵌套
        "isVaccinated": member.findtext("flightQualification/isVaccinated") == "true"
    })

result = pd.DataFrame(data_list)

这里不需要嵌套多层for循环找子节点,直接给findtext传入节点的相对路径就能直接拿到嵌套字段的值,比逐层找子标签的写法简单很多。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:36:34