Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将XML文件(带有嵌入式词典)解析为数据帧_Python_Xml_Pandas_Dataframe - Fatal编程技术网

Python 将XML文件(带有嵌入式词典)解析为数据帧

Python 将XML文件(带有嵌入式词典)解析为数据帧,python,xml,pandas,dataframe,Python,Xml,Pandas,Dataframe,我目前正在从事一个项目,需要解析一个大XML文件(6gbs),然后对数据运行一些转换。起初,我对文件大小有一些问题,但我已经成功地构建了一个循环,在运行后会转储内存,因此现在我非常希望将数据放入pandas数据帧,因为我认为它非常适合我需要做的事情。下面是一个简单的循环: import pandas as pd import numpy as np import xml.etree.cElementTree as ET for event, elem in ET.iterparse(XML_F

我目前正在从事一个项目,需要解析一个大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文件进行解析,从一个记录解析到另一个记录,并将分支解析到一个数据帧中,可能将字典值存储为索引或pandas数据框中的某些内容?

在解析节点-.attrib值后创建一个详细字典,然后将其导入pandas数据框。@min2bro不确定详细字典是什么意思,无法在线找到有关这些值的任何信息?我正在努力将内容压缩到字典中,因为node.attrib值本身就是一个字典,所以如果我尝试压缩键/值对,它将不起作用。您可以共享要处理的示例xml吗?