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

使用Pandas读取XML时如何同时获取xlink:label属性与元素文本?

问题原因

你遇到的情况是因为XML中存在xlink命名空间,且元素名<link:label>与属性xlink:label同名,Pandas默认解析时将元素文本映射到了label列,而未正确提取带命名空间的xlink:label属性。

解决方案

需要显式指定XML的命名空间,让Pandas正确识别并提取所有属性,同时将元素文本保留在单独列中:

  1. 定义命名空间字典:对应XML中的link和xlink命名空间(URI为XBRL标准定义值)
  2. 调整pd.read_xml参数:传入命名空间,确保解析器提取命名空间属性,同时保留元素文本

代码示例

import pandas as pd

# 定义XML命名空间
namespaces = {
    'link': 'http://www.xbrl.org/2003/linkbase',
    'xlink': 'http://www.w3.org/1999/xlink'
}

# 读取XML并提取所有属性与文本
label_df = pd.read_xml(
    open(filing_lab),
    namespaces=namespaces,
    xpath="//link:label",
    elems_only=False,
    parser='lxml'  # 需先安装lxml:pip install lxml
)

# 重命名列,区分属性与文本
label_df.rename(columns={
    'text': 'label_text',
    'xlink_label': 'xlink_label'
}, inplace=True)

预期输出

修改后生成的DataFrame将包含所有所需字段:

lang    type        xlink_label                  role                                  label_text
0   en-US   resource    us-gaap_TradeNamesMember_lbl http://www.xbrl.org/2003/role/label    Trade Names [Member]

补充说明

  • lxml对XML命名空间的解析支持更完善,需提前安装
  • elems_only=False确保Pandas提取元素的所有属性,而非仅子元素
  • 重命名列是为了避免混淆xlink:label属性值与元素文本内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:35:21