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

如何在将API返回XML写入DataFrame时消除换行并规整行数据

解决XML转DataFrame时每行单字段的问题

你现在的问题出在遍历XML元素的方式上——每次循环单个字段就创建一个DataFrame,最后concat自然会把每个字段拆成单独的行,还会出现空行。咱们换个思路,先把每个TrackingEvent的所有字段整理成一个完整的字典,再把这些字典收集起来一次性转成DataFrame,就能得到每个事件对应一行的结果了。

修正后的代码

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

# 假设你的url和headers已经提前定义好
response_status = requests.get(url, headers=headers)
tree = ET.fromstring(response_status.content)

consolidated_list = []
# 遍历每个TrackingEvent节点
for event in tree.iter('TrackingEvent'):
    event_data = {}
    # 遍历当前事件下的所有子元素
    for elem in event:
        # 只处理有实际内容的元素,跳过空值
        if elem.text is not None:
            event_data[elem.tag] = elem.text
    # 把整理好的单个事件数据加入列表
    consolidated_list.append(event_data)

# 直接用字典列表生成符合要求的DataFrame
consolidated_df = pd.DataFrame(consolidated_list)
print(consolidated_df)

代码说明

  • 先遍历每个TrackingEvent节点,为每个事件单独创建一个空字典event_data
  • 再遍历当前事件下的子字段(比如DateTimeStamp、Event),把非空的键值对存入字典,确保每个字典对应一个完整的事件信息
  • 最后用pd.DataFrame()直接把字典列表转成DataFrame,每个字典就对应DataFrame的一行

运行这段代码后,你就能得到期望的输出:

DateTimeStamp           Event ExtraInfo
0        202010        Delivered     02921
1        202010  Delivery today     31916

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:17:42