Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将python xml文件转换为数据帧_Python_Xml_Pandas_Elementtree - Fatal编程技术网

将python xml文件转换为数据帧

将python xml文件转换为数据帧,python,xml,pandas,elementtree,Python,Xml,Pandas,Elementtree,我有一个xml文件,格式如下: <table name="ecat"> <tuple> <atom name="TaxAccNo1">test</atom> <atom name="TaxAccNo2">00005504</atom> <atom name="TaxAccNo3">1</atom> <atom name="irn">100107<

我有一个xml文件,格式如下:

<table name="ecat">

  <tuple>
    <atom name="TaxAccNo1">test</atom>
    <atom name="TaxAccNo2">00005504</atom>
    <atom name="TaxAccNo3">1</atom>
    <atom name="irn">100107</atom>
  </tuple>

  <tuple>
    <atom name="TaxAccNo1">test</atom>
    <atom name="TaxAccNo2">00005505</atom>
    <atom name="TaxAccNo3">2</atom>
    <atom name="irn">100108</atom>
  </tuple>

  <tuple>
    <atom name="TaxAccNo1">test</atom>
    <atom name="TaxAccNo2">00005506</atom>
    <atom name="TaxAccNo3">3</atom>
    <atom name="irn">100109</atom>
  </tuple>

</table>

我该怎么做

您可以使用python的xml和列表/目录理解:

In [11]: import xml

In [12]: e = xml.etree.ElementTree.parse(open("foo.xml"))

In [13]: pd.DataFrame([{a.get('name'): a.text for a in t} for t in e.findall("tuple")])
Out[13]:
  TaxAccNo1 TaxAccNo2 TaxAccNo3     irn
0      test  00005504         1  100107
1      test  00005505         2  100108
2      test  00005506         3  100109

检查此选项可能会有所帮助:我很惊讶没有read_xml(read_html没有我记得的那么丰富)@AndyHayden确切地说,我们需要它。:)
In [11]: import xml

In [12]: e = xml.etree.ElementTree.parse(open("foo.xml"))

In [13]: pd.DataFrame([{a.get('name'): a.text for a in t} for t in e.findall("tuple")])
Out[13]:
  TaxAccNo1 TaxAccNo2 TaxAccNo3     irn
0      test  00005504         1  100107
1      test  00005505         2  100108
2      test  00005506         3  100109