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

Python解析XML提取节点:如何将IDOPERATION属性并入Pandas DataFrame

解决方案:关联OPERATION的IDOPERATION属性到Score数据

步骤1:明确XML层级关系

首先确认你的XML结构是OPERATION节点包含多个Score子节点(参考示例结构),我们将通过父节点(OPERATION)获取IDOPERATION属性,再与子节点(Score)的属性组合。

示例XML结构:

<ROOT>
  <OPERATION IDOPERATION="OP-001">
    <Score SCORE="90" PI="0.92" EXCLUSION="No"/>
    <Score SCORE="85" PI="0.87" EXCLUSION="Yes"/>
  </OPERATION>
  <OPERATION IDOPERATION="OP-002">
    <Score SCORE="95" PI="0.95" EXCLUSION="No"/>
  </OPERATION>
</ROOT>

步骤2:修改代码,关联父节点属性

遍历每个OPERATION节点,先提取IDOPERATION属性,再遍历该节点下的所有Score子节点,将IDOPERATION加入每一行数据中:

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

# 解析XML文件
tree = ET.parse('your_file.xml')
root = tree.getroot()

# 初始化存储数据的列表
data_rows = []

# 遍历每个OPERATION节点
for operation in root.findall('.//OPERATION'):
    # 获取当前OPERATION的IDOPERATION属性
    id_operation = operation.get('IDOPERATION')
    # 遍历当前OPERATION下的所有Score节点
    for score in operation.findall('./Score'):
        # 组合行数据:IDOPERATION + Score的三个属性
        row = {
            'IDOPERATION': id_operation,
            'SCORE': score.get('SCORE'),
            'PI': score.get('PI'),
            'EXCLUSION': score.get('EXCLUSION')
        }
        data_rows.append(row)

# 转换为DataFrame
df = pd.DataFrame(data_rows)
# 可选:转换数据类型(比如SCORE和PI转为数值型)
df['SCORE'] = pd.to_numeric(df['SCORE'])
df['PI'] = pd.to_numeric(df['PI'])

print(df)

步骤3:验证结果

运行后得到的DataFrame会包含你需要的四列:

IDOPERATIONSCOREPIEXCLUSION
OP-001900.92No
OP-001850.87Yes
OP-002950.95No

如果你用lxml库的替代写法

如果习惯用lxml,逻辑完全一致,只是导入和解析方式略有不同:

import pandas as pd
from lxml import etree

tree = etree.parse('your_file.xml')
root = tree.getroot()

data_rows = []
for operation in root.xpath('//OPERATION'):
    id_operation = operation.get('IDOPERATION')
    for score in operation.xpath('./Score'):
        row = {
            'IDOPERATION': id_operation,
            'SCORE': score.get('SCORE'),
            'PI': score.get('PI'),
            'EXCLUSION': score.get('EXCLUSION')
        }
        data_rows.append(row)

df = pd.DataFrame(data_rows)

内容的提问来源于stack exchange,提问作者Bryam Williams Hirsch Trujillo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:50:25