连接大数据帧时出现MemoryError

时间:2019-10-24 09:05:10

标签: python pandas memory out-of-memory concatenation

我正在创建一个读取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。如果我可以运行代码并抛出该错误而不会崩溃,请在此处进行更新。

0 个答案:

没有答案