所有人都试图解决这个问题几天,虽然我认为我已经接近了,但它只是回归空白,因为它没有抓住正确的XML。
<Attribute>
<Name>Column1</Name>
<Value>abcded</Value>
</Attribute>
<Attribute>
<Name>Column2</Name>
<Value>abcdef</Value>
</Attribute>
<Attribute>
<Name>coumn3</Name>
<Value>abcdef</Value>
</Attribute>
for node in parsed_xml.iter():
Attributes = node.get.attrib('column1')
correlationssnnamecount = node.find('column2')
divphoneaddrcount = node.find('column3')
df_xml = df_xml.append(
pd.Series([column1, getvalueofnode(column2),
getvalueofnode(column3)],
index=dfcols),
ignore_index=True)
print df_xml
我正在寻找的基本上是我的数据框,其标题为&#34; column1&#34;和值,&#34; column2&#34;等
答案 0 :(得分:0)
随着文件的更改,这就是解决方案 但请注意,对于有效的xml文件,您需要类似
的内容<data> ...</data>
在开头和结尾
import xml.etree.ElementTree as ET
import pandas as pd
inp=ET.parse("inputfile.xml")
inroot=inp.getroot()
ss={}
for child in inroot.iter('Attribute'):
for n,v in zip(child.findall(".//Name"),child.findall(".//Value")):
ss.update({n.text:v.text})
df=pd.DataFrame(ss,index=[0])
Out:
Column1 Column2 coumn3
0 abcded abcdef abcdef
如果您的inputfile.xml是此处给出的xml文件https://docs.python.org/2/library/xml.etree.elementtree.html#module-xml.etree.ElementTree
然后是
import xml.etree.ElementTree as ET
import pandas as pd
inp=ET.parse("inputfile.xml")
inroot=inp.getroot()
df=pd.DataFrame(columns= ['Country','rank','year','gdppc'])
ranks = inroot.findall(".//rank")
years = inroot.findall(".//year")
gdppc= inroot.findall(".//gdppc")
df['Country']=[child.attrib['name'] for child in inroot]
df['rank']=[r.text for r in ranks]
df['year']=[y.text for y in years]
df['gdppc'] = [g.text for g in gdppc]
这会根据您的请求生成数据帧。
df:
Country rank year gdppc
0 Liechtenstein 1 2008 141100
1 Singapore 4 2011 59900
2 Panama 68 2011 13600