如何在Python中使用pandas pd.read_xml读取包含多个数据的xml标记



我有以下玩具示例代码来使用pandas读取xml

xml = '''<?xml version='1.0' encoding='utf-8'?>
<data>
<d>10</d>
<d>20</d>
<d>11</d>
<d>2</d>
<d>5</d>
</data>'''
import pandas as pd
df = pd.read_xml(xml,xpath="//data")

结果

>>> df
d
0  5

它似乎只读取最后一个数据项。

预期结果

然而,我预计结果会出现以下DataFrame

>>> df
d
0  10
1  20
2  11
3   2
4   5

问题

是否可以使用pd.read_xml读取单个DataFrame中的所有d标签?

这不是pd.read_xml支持的用例。如果XPath生成以下形式的节点列表,效果最好:

<row>
<col1>...</col1>
<col2>...</col2>
<col3>...</col3>
</row>

您可以手动解析XML:

from xml.etree import ElementTree
xml = '''<?xml version='1.0' encoding='utf-8'?>
<data>
<d>10</d>
<d>20</d>
<d>11</d>
<d>2</d>
<d>5</d>
</data>'''
tree = ElementTree.fromstring(xml)
df = pd.DataFrame({
'd': [int(d.text) for d in tree.findall(".//d")]
})

最新更新