【问题标题】:Convert XML Response to Python Dataframe将 XML 响应转换为 Python 数据框
【发布时间】:2019-06-21 05:31:20
【问题描述】:

http://stat.data.abs.gov.au/restsdmx/sdmx.ashx/GetDataStructure/all

从上面的链接我们得到http://www.abs.gov.au/中可用的数据集列表

我需要提取所有英文和法文的数据集 ID 和名称

KeyFamily id 作为“数据集 ID”

将 xml:lang="en" 命名为“数据集名称英文”

将 xml:lang="fr" 命名为“数据集名称法语”

从表中:“消息:KeyFamilies”

来源:

尝试下面的代码:

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

URL = 'http://stat.data.abs.gov.au/restsdmx/sdmx.ashx/GetDataStructure/all'

print('\n> Retrieving XML Data:', URL)
XML_Data = requests.get(URL).content
print('>> XML_Data:', len(XML_Data))

def xml2df(XML_Data):
    root = ET.XML(XML_Data) # element tree
    all_records = []
    for i, child in enumerate(root):
    print(i)
    record = {}
    for subchild in child:
        record[subchild.tag] = subchild.text
    all_records.append(record)
    df = pd.DataFrame(all_records)

    return df

df = xml2df(XML_Data)

【问题讨论】:

    标签: python python-3.x pandas xml-parsing


    【解决方案1】:

    经过长时间的工作,下面的代码给出了我的预期。

    import requests, csv
    import pandas as pd
    import xml.etree.ElementTree as ET
    
    URL = 'http://stat.data.abs.gov.au/restsdmx/sdmx.ashx/GetDataStructure/all'
    
    print('\n> Retrieving XML Data:', URL)
    XML_DF = requests.get(URL).content
    print('>> XML_DF:', len(XML_DF))
    
    root = ET.XML(XML_DF) # element tree
    XML_List = []
    for child in root[1]:
        XML_Dict = {}
        XML_Dict['Dataset_Id'] = child.attrib['id']
        for subchild in child:
        if ''.join(subchild.attrib.values()) == 'en':
            XML_Dict['Dataset_Name_EN'] = subchild.text
        elif ''.join(subchild.attrib.values()) == 'fr':
            XML_Dict['Dataset_Name_FR'] = subchild.text
    
        XML_List.append(XML_Dict)
    XML_DF = pd.DataFrame(XML_List)
    
    XML_DF.to_csv(r"D:\Sunil_Work\Dataset List.csv", index=False)
    

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 2022-01-20
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多