我的臨時問題涉及以下內容
鑒于此 xml 結構(保存在 xml_FILE 中):
<countriesAndStates>
<countries>
<name>USA</name>
<states>
<active>true</active>
<stateName>Colorado</stateName>
<isoCode>CO</isoCode>
</states>
<states>
<active>false</active>
<stateName>Florida</stateName>
<isoCode>FL</isoCode>
</states>
</countries>
</countriesAndStates>
我通過這個 for 回圈遍歷狀態元素級別,并通過 defaultdict 集合的幫助將結果保存到串列字典中,如下所示:
from collections import defaultdict
tree = ET.parse(xml_FILE)
root = tree.getroot()
dict_of_list = defaultdict(list)
for key in root.findall("./countriesAndStates/"
"countries/"
"states/"):
dict_of_list[key.tag].append(key.text)
然后我將這個 dict 轉換為一個資料框,我將擁有包含狀態元素資料的所有元組,參見:
df = pd.DataFrame(dict_of_list)
print(df)
這樣我得到以下資料幀輸出(方案 元組):
active stateName isoCode
0 true Colorado CO
但是,我希望每個州元組都有國家/地區,以便資料框中的每個元組/行都將轉換為:
name active stateName isoCode
0 USA true Colorado CO
換句話說:對于每個州/記錄,我也想要國家/地區名稱。我怎樣才能做到這一點?
先感謝您。
uj5u.com熱心網友回復:
像這樣的東西
import xml.etree.ElementTree as ET
import pandas as pd
xml = '''<countriesAndStates>
<countries>
<name>USA</name>
<states>
<active>true</active>
<stateName>Colorado</stateName>
<isoCode>CO</isoCode>
</states>
<states>
<active>false</active>
<stateName>Florida</stateName>
<isoCode>FL</isoCode>
</states>
</countries>
</countriesAndStates>'''
data = []
root = ET.fromstring(xml)
for country in root.findall('.//countries'):
name = country.find('name').text
for state in country.findall('states'):
data.append({'name':name})
for e in list(state):
data[-1][e.tag] = e.text
df = pd.DataFrame(data)
print(df)
輸出
name active stateName isoCode
0 USA true Colorado CO
1 USA false Florida FL
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377176.html
上一篇:即使密鑰存在,pythongetkeyfordict也會評估defulat部分
下一篇:熊貓:用字典替換不適用于句子串
