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

使用pandas read_xml()解析带属性XML返回NaN问题求助

解决pandas read_xml提取XML标签属性值的问题

你的问题出在read_xml默认会提取标签的文本内容,但你的数据存储在子标签的value属性中,同时XML带有命名空间,需要调整参数来指定提取属性值。

修正后的代码

import pandas as pd

xml = '''<?xml version='1.0' encoding='utf-8'?>
    <doc:data xmlns:doc="https://example.com">
      <doc:row>
        <doc:shape value="triangle" />
        <doc:degrees value="180" />
        <doc:sides value="3.0"/>
      </doc:row>
      <doc:row>
        <doc:shape value="triangle" />
        <doc:degrees value="180" />
        <doc:sides value="3.0"/>
      </doc:row>
      <doc:row>
        <doc:shape value="triangle" />
        <doc:degrees value="180" />
        <doc:sides value="3.0"/>
      </doc:row>
    </doc:data>'''

df = pd.read_xml(
    xml,
    xpath="//doc:row",
    namespaces={"doc": "https://example.com"},
    element_path="./*",
    attrs_only=True,
    names={"value": None}
)

print(df)

参数说明

  • element_path="./*":指定解析每个doc:row节点下的所有子元素(即doc:shape、doc:degrees、doc:sides)
  • attrs_only=True:告诉pandas只提取子元素的属性内容,忽略标签文本
  • names={"value": None}:将子元素的value属性值作为对应列(列名自动使用子元素的标签名)的内容

输出结果

shape degrees sides
0  triangle     180   3.0
1  triangle     180   3.0
2  triangle     180   3.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:01:00