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

Python解析XML:如何提取对应日期与数值并生成Pandas DataFrame

解决XML解析提取对应日期与数值的问题

核心思路

每个<generic:Obs>节点是一组日期和数值的独立容器,先定位所有Obs节点,再在每个节点内分别提取对应的ObsDimension和ObsValue的value属性,就能保证日期与数值一一对应,不会错位。

完整代码示例

from bs4 import BeautifulSoup
import pandas as pd

# 解析XML内容
soup = BeautifulSoup(response.text, 'xml')
# 定位所有Obs节点(标签前缀需匹配实际XML结构,若没有generic:则直接写"Obs")
obs_nodes = soup.find_all("generic:Obs")

data = []
for obs in obs_nodes:
    # 提取当前Obs节点下的日期和数值
    date = obs.find("generic:ObsDimension")["value"]
    value = obs.find("generic:ObsValue")["value"]
    data.append({"Date": date, "Value": value})

# 生成目标DataFrame
df = pd.DataFrame(data, columns=['Date', 'Value'])

补充说明

  • 如果XML里的标签没有generic:前缀,直接把代码中的前缀去掉即可,比如用find_all("Obs")、find("ObsDimension")。
  • 若存在部分节点缺失ObsDimension或ObsValue的情况,可添加异常处理跳过无效条目:
data = []
for obs in obs_nodes:
    try:
        date = obs.find("generic:ObsDimension")["value"]
        value = obs.find("generic:ObsValue")["value"]
        data.append({"Date": date, "Value": value})
    except (AttributeError, KeyError):
        # 跳过结构不完整的节点
        continue

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:12:10