Python处理电商XML销售数据:多商品订单条目关联修正需求
解决XML订单多商品条目关联错位问题
问题根源是你没按订单层级嵌套遍历,而是全局迭代所有标签,导致多商品订单的条目被错误关联到后续订单ID。正确思路是先遍历每个订单节点,提取该订单的公共信息(OrderID、CustomerID),再在当前订单节点内遍历所有商品条目,把订单信息和商品信息绑定成一条记录,最后统一生成DataFrame。
具体实现代码
import xml.etree.ElementTree as ET import pandas as pd # 替换成你的XML文件路径 tree = ET.parse('电商订单数据.xml') root = tree.getroot() order_data = [] # 遍历每个订单节点(请根据你的XML结构调整节点名称,比如有的可能是<OrderInfo>) for order_node in root.findall('.//Order'): # 提取订单级公共字段 order_id = order_node.findtext('OrderID', default='') customer_id = order_node.findtext('CustomerID', default='') # 遍历当前订单下的所有商品条目 for item_node in order_node.findall('.//OrderItem'): # 提取商品字段 item_id = item_node.findtext('ItemID', default='') product_name = item_node.findtext('ProductName', default='') quantity = item_node.findtext('Quantity', default='0') unit_price = item_node.findtext('UnitPrice', default='0.0') # 合并订单与商品信息,添加到列表 order_data.append({ 'OrderID': order_id, 'CustomerID': customer_id, 'ItemID': item_id, 'ProductName': product_name, 'Quantity': int(quantity), 'UnitPrice': float(unit_price) }) # 生成DataFrame df = pd.DataFrame(order_data) # 查看前几行验证结果 print(df.head())
关键注意点
- 节点路径要匹配你的XML结构:比如如果订单节点嵌套在
<OrderList>下,需要把root.findall('.//Order')改成root.findall('OrderList/Order'),或者用.//Order全局搜索所有Order节点。 - 处理缺失字段:用
findtext()替代find().text,并设置default参数,避免因为某个字段缺失导致代码报错。 - 数据类型转换:像数量、价格这类字段,要转成对应的数值类型(int/float),方便后续分析。
内容的提问来源于stack exchange,提问作者Christian Brune
相关产品推荐
相关产品推荐

