我正在创建一个读取CSV字段并允许用户指定要分类的列,然后再对这些列进行分类的工具。
我的问题是这些CSV文件很大,并且当尝试连接数据帧时,我的PC冻结,并且出现MemoryError。
我将数据帧分成多个块,并在每个块上完成get_dummies
函数并将其存储在列表中。这可以正常工作。
然后,我尝试连接整个列表,如下面的代码所示。
我还删除了数据帧和块列表以节省内存。
dummies = []
columns = self.df[self.selectedHeaders]
del self.df
chunks = (len(columns) / 10000) + 1
df_list = np.array_split(columns, chunks)
del columns
for i, df_chunk in enumerate(df_list):
print("Getting dummy data for chunk: " + str(i))
dummies.append(pd.get_dummies(df_chunk))
del df_list
dummies = pd.concat(dummies, axis=1)
从此代码中可以看到,我存储了我需要的列并将其拆分为大块。然后,我在每个块上运行get_dummies
函数,并将它们存储在列表中。
运行concat
函数时,我崩溃或出现MemoryError。如果我可以运行代码并抛出该错误而不会崩溃,请在此处进行更新。