首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中读取XML SDMX

在python中读取XML SDMX
EN

Stack Overflow用户
提问于 2020-04-04 04:47:19
回答 1查看 251关注 0票数 1

我正在使用python从以下链接读取SDMX XML文件:https://www.newyorkfed.org/xml/fedfunds.htmldirect

理想情况下,我希望将基金利率放入dataframe中,但我正在尝试使用pandasdmx,它似乎不适用于这个

我当前的代码:f

代码语言:javascript
复制
rom urllib.request import urlopen
import xml.etree.ElementTree as ET

url = "https://websvcgatewayx2.frbny.org/autorates_fedfunds_external/services/v1_0/fedfunds/xml/retrieve?typ=RATE&f=03012016&t=04032020"

d2 = urlopen(url).read()
root  ET.fromstring(d2)

for elem in root.iter():
    k = elem.get('OBS_VALUE')
    if k is not None:
        print(k)

我想要的东西看起来像这样:

代码语言:javascript
复制
             FUNDRATE_OBS_POINT='1%' FUNDRATE_OBS_POINT='25%'
2020-04-02   0.03                    0.05
2020-04-01   0.03                    0.05
2020-04-01   0.01                    0.05

我发现这个方法相当难看,对于每个“数据”,我需要检查它是否是没有。有没有更好的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-04 09:12:40

试着这样做:

代码语言:javascript
复制
from lxml import etree
import requests

resp = requests.get(url)

doc = etree.fromstring(resp.content)

headers = []
dates = []
columns = []

fop = doc.xpath('//Series[@FUNDRATE_OBS_POINT]')
datpath = fop[0].xpath('//*[@*="ns13:ObsType"]')
for dat in datpath:
    dates.append(dat.attrib.get('TIME_PERIOD'))
for item in fop:
    headers.append(item.attrib.get('FUNDRATE_OBS_POINT'))
    entries = item.xpath('//*[@*="ns13:ObsType"]')
    column = []
    for entry in entries:
        column.append(entry.attrib.get('OBS_VALUE'))
    columns.append(column)


df = pd.DataFrame(columns=headers,index=dates)

for a, b in zip(headers,columns):
    df[a] = b
df.head(3)

输出:

代码语言:javascript
复制
             1%     25%     50%     75%     99%  TARGET_HIGH  TARGET_LOW
2020-04-02  0.03    0.03    0.03    0.03    0.03    0.03    0.03
2020-04-01  0.03    0.03    0.03    0.03    0.03    0.03    0.03
2020-03-31  0.01    0.01    0.01    0.01    0.01    0.01    0.01
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61020154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档