我必須將 XML 格式的頁面中的內容放入資料框中。
我讀取檔案的代碼是:
from urllib.request import urlopen
import re
import pandas as pd
import xmltodict
from collections import OrderedDict
x= urlopen('https://mpr.datamart.ams.usda.gov/ws/report/v1/cattle/LM_CT138?filter={"filters":[{"fieldName":"Report date","operatorType":"EQUAL","values":["4/1/2022"]}]}').read().decode('utf-8')
data = xmltodict.parse(x)
print(data)
輸出在有序字典中,我嘗試了多種方法將其轉換為所需的資料幀。
例子
keys = data.keys()
values = data.values()
print ("keys : ", str(keys))
print ("values : ", str(values))
pd.DataFrame.from_dict(values)
我將整本字典放在一欄中。我希望它們根據不同庫中的鍵值進行拆分。
uj5u.com熱心網友回復:
正如您在螢屏截圖中看到的那樣,資料存盤在嵌套的字典中
您正在嘗試創建一個列名為“第一級鍵”的資料框。顯然,您在“結果”列中獲得“第一級值”以及“報告”單元格內的整個字典。您需要呼叫嵌套字典的正確級別來獲取正確的資料幀。
import pandas as pd
import requests
import xmltodict
url = 'https://mpr.datamart.ams.usda.gov/ws/report/v1/cattle/LM_CT138?filter={"filters":[{"fieldName":"Report date","operatorType":"EQUAL","values":["4/1/2022"]}]}'
r = requests.get(url)
data = xmltodict.parse(r.text)
data_ = data['results']['report']['record']['report']['record'] # returns the list of "OrderedDict"-s with keys = column names
pd.DataFrame(data_)
抱歉使用requests,我不太熟悉urllib庫
uj5u.com熱心網友回復:
嘗試這個:
import requests
import xml.etree.ElementTree as ET
r = requests.get('https://mpr.datamart.ams.usda.gov/ws/report/v1/cattle/LM_CT138?filter={"filters":[{"fieldName":"Report date","operatorType":"EQUAL","values":["4/1/2022"]}]}')
root = ET.fromstring(r.text)
records = [record.attrib for record in root.iterfind("report/record/report/record")]
df = pd.DataFrame(records)
每列都以字串形式出現。您可以根據需要將其轉換為其他資料型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455787.html
上一篇:移動資料框并填充NaN
下一篇:如何在R中的資料框中進行組劃分?
