[英]Convert XML to pandas dataframe
我想将 XML 转换为 pandas DataFrame。 我使用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 转换为 pandas dataframe?
Dataframe 应如下所示:
以下面的XML为例,你能想出一些Python代码来实现上面的DataFrame吗?
<?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>
我已经为类似的用例制作了 package。 它也可以在这里工作。
pip install pandas_read_xml
你可以做类似的事情
import pandas_read_xml as pdx
df = pdx.read_xml('filename.xml', ['FMPDSORESULT'])
为了展平,你可以
df = pdx.flatten(df)
或者
df = pdx.fully_flatten(df)
您可以使用xmltodict解析您的 XML,然后创建 dataframe。
尝试这个:
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)
这打印出来:
@RECORDID @MODID identificatie naam wachtwoord kenmerk timestamp berichtversie analysecode datum datumontvangst
0 183122 0 GAC sample_naam_1 ww km 30-4-2020 13:51:05 1.0 BST200428 30-4-2020 28-4-2020
1 183123 0 GAC sample_naam_2 ww km 30-4-2020 13:51:05 1.0 BST200429 30-4-2020 28-4-2020
请注意,我必须进一步清理您的 XML 并将所有括号( "
)交换为单个括号( '
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.