我有以下玩具示例代码来使用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")]
})