【发布时间】:2021-04-01 15:08:36
【问题描述】:
我的xml格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<run>
<information>
<logfile>s.log</logfile>
<version>33</version>
<mach>1</mach>
<problemname>mm1</problemname>
<timestamp>20201218.165122.053486</timestamp>
</information>
<controls>
<item>VARS</item>
</controls>
<result>
<status>4</status>
<time>3</time>
<obj>1.0</obj>
<gap>0.15</gap>
</result>
</run>
</results>
在阅读了How to convert an XML file to nice pandas dataframe? 这篇文章后,我在下面有一个示例代码来解析这个文件,但它返回 None。但是,我的问题是,是否有一种快速的方法来创建一个数据框,该数据框包含来自(即 VARS)值和 4 列(即状态、时间、obj 和间隙)的索引。
import pandas as pd
from xml.etree import ElementTree as et
root = (et.parse('test.xml').getroot()).getchildren()
tags = {"tags":[]}
for elem in root:
tag = {}
tag["status"] = elem.attrib['status']
tag["time"] = elem.attrib['time']
tag["obj"] = elem.attrib['obj']
tag["gap"] = elem.attrib['gap']
tags["tags"]. append(tag)
df_users = pd.DataFrame(tags["tags"])
df_users.head()
这是我正在寻找的输出:
status time obj gap
VARS 4 3 1.0 0.15
【问题讨论】:
-
etree 为您输出什么?我们有点不关心 xml,我们关心 etree 的输出,因为这就是你试图制作 df 的内容。
-
您的 xml 格式不正确 - 例如,
<run>和<results>在哪里关闭? -
@JackFleeting。谢谢。刚刚更新了。
-
@noah 感谢分享帖子。据此更新了我的问题。
标签: python pandas xml-parsing