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

使用Pandas read_xml读取XML时Amt列仅识别列名不取值如何解决?

问题原因

Amt属于自闭合标签,取值全部存储在标签的val、curr属性中,pd.read_xml()默认仅提取标签包裹的文本内容,不会主动读取标签属性值,因此你只能识别到Amt列名,无法拿到对应取值。

解决方法

方法1:分两次读取后合并

分别读取普通标签的文本值和Amt的属性值,再合并为同一个DataFrame:

# 读取原有可正常解析的Type、Activation字段
df_base = pd.read_xml(xml_data)
# 单独读取Amt标签的属性值
df_amt = pd.read_xml(xml_data, xpath="//Amt", attrs_only=True)
# 合并两个结果
xml_df = pd.concat([df_base, df_amt], axis=1)

如果需要调整属性的列名,可直接重命名:

xml_df = xml_df.rename(columns={"val": "Amt数值", "curr": "Amt货币类型"})

方法2:一次性读取所有内容

通过配置参数同时提取标签文本和属性,一步得到结果:

xml_df = pd.read_xml(
    xml_data,
    elems_only=False,
    attrs_only=False
)
注意说明
  • 如果XML存在多层嵌套,仅需调整xpath参数定位到目标节点的对应层级即可
  • 自闭合标签本身无文本内容,原有Amt列的空值属于正常现象,所有有效信息都在提取出的属性列中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:54:03