我有一个大小为4 GB的XML文件。我想将其解析并转换为数据框以进行处理。但由于文件太大,以下代码无法将文件转换为Pandas数据框。代码只是一直在加载,没有提供任何输出。但是,当我将其用于较小大小的类似文件时,我获得了正确的输出。
有人能否提出任何解决方案。也许是从XML到数据框的转换速度更快的代码,或者将XML文件拆分成更小的子集。
是否应该在我的个人系统上处理此类大型XML文件(2 GB RAM),还是应该使用Google Colab。如果使用Google Colab,则是否有一种更快地将这样大的文件上传到Drive,然后到Colab的方法?
以下是我使用的代码:
以下是我的 XML 文件:
有人能否提出任何解决方案。也许是从XML到数据框的转换速度更快的代码,或者将XML文件拆分成更小的子集。
是否应该在我的个人系统上处理此类大型XML文件(2 GB RAM),还是应该使用Google Colab。如果使用Google Colab,则是否有一种更快地将这样大的文件上传到Drive,然后到Colab的方法?
以下是我使用的代码:
import xml.etree.ElementTree as ET
tree = ET.parse("Badges.xml")
root = tree.getroot()
#Column names for DataFrame
columns = ['row Id',"UserId",'Name','Date','Class','TagBased']
#Creating DataFrame
df = pd.DataFrame(columns = columns)
#Converting XML Tree to a Pandas DataFrame
for node in root:
row_Id = node.attrib.get("Id")
UserId = node.attrib.get("UserId")
Name = node.attrib.get("Name")
Date = node.attrib.get("Date")
Class = node.attrib.get("Class")
TagBased = node.attrib.get("TagBased")
df = df.append(pd.Series([row_Id,UserId,Name,Date,Class,TagBased], index = columns), ignore_index = True)
以下是我的 XML 文件:
<badges>
<row Id="82946" UserId="3718" Name="Teacher" Date="2008-09-15T08:55:03.923" Class="3" TagBased="False" />
<row Id="82947" UserId="994" Name="Teacher" Date="2008-09-15T08:55:03.957" Class="3" TagBased="False" />
<row Id="82949" UserId="3893" Name="Teacher" Date="2008-09-15T08:55:03.957" Class="3" TagBased="False" />
<row Id="82950" UserId="4591" Name="Teacher" Date="2008-09-15T08:55:03.957" Class="3" TagBased="False" />
<row Id="82951" UserId="5196" Name="Teacher" Date="2008-09-15T08:55:03.957" Class="3" TagBased="False" />
<row Id="82952" UserId="2635" Name="Teacher" Date="2008-09-15T08:55:03.957" Class="3" TagBased="False" />
<row Id="82953" UserId="1113" Name="Teacher" Date="2008-09-15T08:55:03.957" Class="3" TagBased="False" />
DataFrame.append
或pd.concat
。这会导致二次复制。 - Parfait