Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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 - Fatal编程技术网

Python 将XML转换为数据帧

Python 将XML转换为数据帧,python,xml,pandas,Python,Xml,Pandas,我想将XML转换为数据帧。我使用ElementTree库解析XML import pandas as pd import xml.etree.ElementTree as et xtree = et.parse('xmlfile.xml) xroot = xtree.getroot() [elem.tag for elem in xroot.iter()] 如何访问每个标记的值,以便将XML转换为数据帧 数据帧应如下所示: 以下面的XML为例,您能想出一些Python代码来实现上述数据帧

我想将XML转换为数据帧。我使用ElementTree库解析XML

import pandas as pd
import xml.etree.ElementTree as et

xtree = et.parse('xmlfile.xml)
xroot = xtree.getroot() 

[elem.tag for elem in xroot.iter()]
如何访问每个标记的值,以便将XML转换为数据帧

数据帧应如下所示:

以下面的XML为例,您能想出一些Python代码来实现上述数据帧吗

<?xml version="1.0" encoding="UTF-8"?>

<!-- Deze grammatica wordt niet meer gebruikt. Gebruik voortaan FMPXMLRESULT. -->

-<FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult">

<ERRORCODE>0</ERRORCODE>

<DATABASE>FrontEnd.fmp12</DATABASE>

<LAYOUT/>


-<ROW RECORDID="183122" MODID="0">

<identificatie>GAC</identificatie>

<naam>sample_naam_1</naam>

<wachtwoord>ww</wachtwoord>

<kenmerk>km</kenmerk>

<timestamp>30-4-2020 13:51:05</timestamp>

<berichtversie>1.0</berichtversie>

<analysecode>BST200428</analysecode>

<datum>30-4-2020</datum>

<datumontvangst>28-4-2020</datumontvangst>


</ROW>


-<ROW RECORDID="183123" MODID="0">

<identificatie>GAC</identificatie>

<naam>sample_naam_2</naam>

<wachtwoord>ww</wachtwoord>

<kenmerk>km</kenmerk>

<timestamp>30-4-2020 13:51:05</timestamp>

<berichtversie>1.0</berichtversie>

<analysecode>BST200429</analysecode>

<datum>30-4-2020</datum>

<datumontvangst>28-4-2020</datumontvangst>


</ROW>

</FMPDSORESULT>
您可以使用来解析XML,然后创建数据帧

试试这个:

import pandas as pd
import xmltodict

data = """
<?xml version='1.0' encoding='UTF-8'?>
<FMPDSORESULT xmlns='http://www.filemaker.com/fmpdsoresult'>
<ERRORCODE>0</ERRORCODE>
<DATABASE>FrontEnd.fmp12</DATABASE>
<LAYOUT/>
<ROW RECORDID='183122' MODID='0'>
<identificatie>GAC</identificatie>
<naam>sample_naam_1</naam>
<wachtwoord>ww</wachtwoord>
<kenmerk>km</kenmerk>
<timestamp>30-4-2020 13:51:05</timestamp>
<berichtversie>1.0</berichtversie>
<analysecode>BST200428</analysecode>
<datum>30-4-2020</datum>
<datumontvangst>28-4-2020</datumontvangst>
</ROW>
<ROW RECORDID='183123' MODID='0'>
<identificatie>GAC</identificatie>
<naam>sample_naam_2</naam>
<wachtwoord>ww</wachtwoord>
<kenmerk>km</kenmerk>
<timestamp>30-4-2020 13:51:05</timestamp>
<berichtversie>1.0</berichtversie>
<analysecode>BST200429</analysecode>
<datum>30-4-2020</datum>
<datumontvangst>28-4-2020</datumontvangst>
</ROW>
</FMPDSORESULT>
"""

parsed = xmltodict.parse(data.strip())
df = pd.DataFrame(parsed["FMPDSORESULT"]["ROW"])
display(df)
请注意,我必须进一步清理您的XML,并将所有括号换成单个括号。

您可以使用它来解析XML,然后创建一个数据框架

试试这个:

import pandas as pd
import xmltodict

data = """
<?xml version='1.0' encoding='UTF-8'?>
<FMPDSORESULT xmlns='http://www.filemaker.com/fmpdsoresult'>
<ERRORCODE>0</ERRORCODE>
<DATABASE>FrontEnd.fmp12</DATABASE>
<LAYOUT/>
<ROW RECORDID='183122' MODID='0'>
<identificatie>GAC</identificatie>
<naam>sample_naam_1</naam>
<wachtwoord>ww</wachtwoord>
<kenmerk>km</kenmerk>
<timestamp>30-4-2020 13:51:05</timestamp>
<berichtversie>1.0</berichtversie>
<analysecode>BST200428</analysecode>
<datum>30-4-2020</datum>
<datumontvangst>28-4-2020</datumontvangst>
</ROW>
<ROW RECORDID='183123' MODID='0'>
<identificatie>GAC</identificatie>
<naam>sample_naam_2</naam>
<wachtwoord>ww</wachtwoord>
<kenmerk>km</kenmerk>
<timestamp>30-4-2020 13:51:05</timestamp>
<berichtversie>1.0</berichtversie>
<analysecode>BST200429</analysecode>
<datum>30-4-2020</datum>
<datumontvangst>28-4-2020</datumontvangst>
</ROW>
</FMPDSORESULT>
"""

parsed = xmltodict.parse(data.strip())
df = pd.DataFrame(parsed["FMPDSORESULT"]["ROW"])
display(df)

请注意,我必须进一步清理您的XML,并将所有括号换成单个括号。

我为类似的用例制作了一个包。在这里也可以

pip install pandas_read_xml
你可以这样做

import pandas_read_xml as pdx

df = pdx.read_xml('filename.xml', ['FMPDSORESULT'])
要想变平,你可以

df = pdx.flatten(df)


我已经为类似的用例制作了一个包。在这里也可以

pip install pandas_read_xml
你可以这样做

import pandas_read_xml as pdx

df = pdx.read_xml('filename.xml', ['FMPDSORESULT'])
要想变平,你可以

df = pdx.flatten(df)


您的数据格式不正确。很抱歉,我没有完全复制XML,我只是更改了它,直到给了我错误-例如,您的布局部分有一个没有相关开头的结尾。。。我不确定还有哪些错误。为了安全起见,将这段数据作为字符串运行,看看它是否给出任何错误。如果数据格式不正确。很抱歉,我没有完全复制XML,我只是更改了它,直到给了我错误-例如,您的布局部分有一个没有相关开头的结尾。。。我不确定还有哪些错误。为了安全起见,将这段数据作为字符串运行,看看是否有错误