如何解决如何使用lxml.objectify将XML数据导入DataFrame熊猫并以表格格式显示?
这是一个XML文件,其中包含我要使用 lxml.objectify 和 pandas.DataFrame
执行任务的数据
文件: students.xml
<?xml version="1.0" encoding="UTF-8"?>
<college>
<department>
<name>information Technology</name>
<semester>
<sem_3>
<student_no>1</student_no>
<student_name>ravindra</student_name>
<student_city>Ahmedabad</student_city>
</sem_3>
</semester>
</department>
<department>
<name>Computer Engineering</name>
<semester>
<sem_3>
<student_no>2</student_no>
<student_name>Surya</student_name>
<student_city>Gandhinagar</student_city>
</sem_3>
</semester>
</department>
</college>
我尝试了这个,只能得到这个输出。
import pandas as pd
from lxml import objectify
from pandas import DataFrame
xml = objectify.parse(open('students.xml'))
root = xml.getroot()
number = []
name = []
city = []
for i in range(0,2):
obj = root.getchildren()[i].getchildren()
for j in range(0,1):
child_obj = obj[1].getchildren()[j].getchildren()
number.append(child_obj[0])
name.append(child_obj[1])
city.append(child_obj[2])
df = pd.DataFrame(list(zip(number,name,city)),columns =['student_no','student_name','student_city'])
print(df)
-----------------------------------------------
student_no student_name student_city
0 [[[1]]] [[[ravindra]]] [[[Ahmedabad]]]
1 [[[2]]] [[[Surya]]] [[[Gandhinagar]]]
-----------------------------------------------
我无法获得这样的输出...
-----------------------------------------------
student_no student_name student_city
0 1 ravindra Ahmedabad
1 2 Surya Gandhinagar
-----------------------------------------------
您能帮我吗?
解决方法
您正在将lxml对象附加到列表中
import pandas as pd
from lxml import objectify
from pandas import DataFrame
with open('students.xml') as f:
xml = objectify.parse(f)
root = xml.getroot()
number = []
name = []
city = []
for i in range(0,2):
obj = root.getchildren()[i].getchildren()
for j in range(0,1):
child_obj = obj[1].getchildren()[j].getchildren()
number.append(int(child_obj[0].text))
name.append(child_obj[1].text)
city.append(child_obj[2].text)
data = {"student_no": number,'student_name': name,'student_city': city}
df = pd.DataFrame(data)
print(df)
输出:
student_no student_name student_city
0 1 Ravindra Ahmedabad
1 2 Surya Gandhinagar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。