【发布时间】:2023-04-02 16:16:01
【问题描述】:
我正在尝试将以下 xml 数据转换为数据框。
<?xml version="1.0" encoding="utf-8"?>
<TEST>
<Node1L1>1</Node1L1>
<Node2L1>FP</Node2L1>
<SUBL1>
<M>
<PAR>
<NAME>A</NAME>
<TYPE>f</TYPE>
<DESC />
<VAL>1,2,3,4,5,6</VAL>
</PAR>
<PAR>
<NAME>B</NAME>
<TYPE>f</TYPE>
<DESC />
<VAL>10,20,30,40,50,60</VAL>
</PAR>
<PAR>
<NAME>C</NAME>
<TYPE>f</TYPE>
<DESC />
<VAL>11,22,33,44,55,66</VAL>
</PAR>
<PAR>
<NAME>D</NAME>
<TYPE>f</TYPE>
<DESC />
<VAL>a,b,c,d,e,f</VAL>
</PAR>
<PAR>
<NAME>E</NAME>
<TYPE>f</TYPE>
<DESC />
<VAL>aa,bb,cc,dd,ee,ff</VAL>
</PAR>
</M>
<M>
<PAR>
<NAME>A_test</NAME>
<VAL>0.0,0.1,0.2,0.3,0.4,0.5</VAL>
</PAR>
</M>
</SUBL1>
</TEST>
我只需要提取名称 A,C,E
的第一个 M 标记 PAR 子节点
这只是一个示例文件,但我拥有的文件很大,在 2 个 M 标签中有很多 PAR 标签。我能够使用下面的代码进行 XML 转换,但它也需要第二个 M 标签 PAR 标签。
df = pd.read_xml(path2file, xpath="//*[local-name()='PAR']")
我正在尝试寻找一种方法来改进xpath=
字符串,以便它只会将第一个 M 标记数据提取到数据框中。
另外,如果有任何替代方法,请告诉我。我也想避免节点中的空 DESC 列。
【问题讨论】:
-
您在寻找这个:
.//M/PAR[NAME=("A", "C", "E")]
?如果只需要取第一个元素,只需添加 index ->.//M[1]/PAR[NAME=("A","C","E")]
?
标签:
python
pandas
xml
dataframe
lxml
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用 python 脚本将 XML 转换为 DataFrame - Python技术站