Python 将XML转换为数据帧
我想将XML转换为数据帧。我使用ElementTree库解析XMLPython 将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代码来实现上述数据帧
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,我只是更改了它,直到给了我错误-例如,您的布局部分有一个没有相关开头的结尾。。。我不确定还有哪些错误。为了安全起见,将这段数据作为字符串运行,看看是否有错误