Oii Luiz, como você está?
Peço desculpas pela demora em obter um retorno.
A partir da versão 1.3.0 o pandas contém uma função responsável por ler um arquivo xml e transformá-lo em um dataframe, a read_html.
Suponha que tenhamos o seguinte arquivo XML:
<?xml version='1.0' encoding='utf-8'?>
<data xmlns="http://example.com">
<row>
<shape>square</shape>
<degrees>360</degrees>
<sides>4.0</sides>
</row>
<row>
<shape>circle</shape>
<degrees>360</degrees>
<sides/>
</row>
<row>
<shape>triangle</shape>
<degrees>180</degrees>
<sides>3.0</sides>
</row>
</data>
Para transformá-lo em um dataframe com as informações das tags, basta utilizarmos o seguinte comando:
pd.read_xml('arquivo.xml')
Que resultará no seguinte dataframe:
| shape | degrees | sides |
---|
0 | square | 360 | 4 |
1 | circle | 360 | nan |
2 | triangle | 180 | 3 |
Para o seu caso em específico basta passarmos como parâmetro da função read_xml a string com a estrutura xml correta:
import xml.etree.ElementTree as ET
import pandas as pd
tree = ET.parse('arquivo.xml')
root = tree.getroot()
#converte todo o XML em string e depois faz o decode para ficar na esrtrutura correta.
xml_estruturado = ET.tostring(root, encoding="utf8").decode("utf8")
print(pd.read_xml(xml_estruturado))
Para instalar a versão do pandas 1.3.0, execute o seguinte comando no terminal:
pip install pandas==1.3.0
Qualquer dúvida fico à disposição.
Grande abraço!