我将尝试使用Pandas和xml.etree.ElementTree库将一个嵌套的XML文件转换为Python中的DataFrame。
XML文件如下:
<Hospital>
<HospitalClass name = "St. Mungo's Hospital for Magical Maladies">
<dataStorage id ="3" class="UnitVector">
<UnitVector name="numHospitalized">
<Data> 3; 5; 1; 2; 6; 9; 8 </Data>
</UnitVector>
</dataStorage>
<dataStorage id ="1" class="UnitVector">
<UnitVector name="numOperated">
<Data> 5; 0; 12; 8; 4; 5; 7</Data>
</UnitVector>
</dataStorage>
<dataStorage id = "2" class ="UnitVector">
<UnitVector name="antibioticsUsed">
<Data> 4.54; 5.71; nan; 7.12; 8.75; 2.99; 4.94</Data>
</UnitVector>
</dataStorage>
</HospitalClass>
</Hospital>
我的主要问题是提取以分号分隔的格式的数据。我已经在stackoverflow上搜索了很久,但没有找到任何类似的帖子。
使用:
import pandas as pd
import xml.etree.ElementTree as et
tree = et.parse("Hospital.xml")
root = tree.getroot()
for child in root.iter():
print(child.tag, child.attrib)
您可以访问存储为标签和属性的信息,但我不确定如何访问存储在数据字段中的值。
import pandas as pd
import xml.etree.ElementTree as et
tree = et.parse("Hospital.xml")
root = tree.getroot()
df_cols = ["numOperated", "antibioticsUsed", "numHospilaized"]
rows = []
for node in root:
numOperated = node.attrib.get("numOperated")
antibioticsUsed = node.attrib.get("antibioticsUsed")
numHospilaized = node.attrib.get("numHospilaized")
rows.append({"numOperated": numOperated, "antibioticsUsed " : antibioticsUsed,
"numHospilaized ": numHospilaized })
df = pd.DataFrame(rows,colums = df_cols)
print(df)
我尝试过的解决方案,但这只打印出 None 和 Nan 作为唯一的值。我还尝试在上面的代码中添加 XML 树的目录,但最终仍然得到 None 值。
我最终想要在 pandas dataframe 中将 XML 文件转换成的表格是:
手术次数 | 使用抗生素 | 住院次数 | |
---|---|---|---|
1 | 5 | 4.54 | 3 |
2 | 0 | 5.71 | 5 |
3 | 12 | nan | 1 |
4 | 8 | 7.12 | 2 |
5 | 4 | 8.75 | 6 |
6 | 5 | 2.99 | 9 |
7 | 7 | 4.94 | 8 |
有人知道如何解决这个问题吗?我真的很感激任何帮助!
dp.astype(float)
来确保列中的文本前后没有空格。 - sammywemmy