我目前正在一个项目中,我需要解析一个大型XML文件(6gbs),然后对数据进行一些转换。最初我在文件大小方面遇到了一些问题,但是我设法建立了一个循环,在运行后转储内存,所以现在我真的很想将数据放入pandas数据框中,因为我认为这对于我需要的数据非常理想去做。这是它的简单循环:
import pandas as pd
import numpy as np
import xml.etree.cElementTree as ET
for event, elem in ET.iterparse(XML_FILE):
if elem.tag == "record":
if (elem.attrib.get("category") != 'X') & (elem.attrib.get("category") != 'Y'):
if (elem.attrib.get("sub-category") == 'Z'):
for node in elem.getiterator():
print(node.attrib)
break
elem.clear()
使用以上代码,我可以遍历XML文件,因为我想要的每个记录都在记录标记之间。从本质上讲,我需要遍历该记录标签内的分支,并将它们解析为以node.tag为列,并以node.attrib为值的熊猫数据框。
但是,我遇到了将标签转换为列标题以及在将它们存储为字典值时解析node.attrib的问题。我是否可以解析这个XML文件,从记录到记录,再将分支解析为数据框,可能将字典值存储为indeces或在pandas数据框中存储?