我正在创建一个读取 CSV 字段并允许用户指定他们想要分类的列然后对这些列进行分类的工具。
我的问题是这些 CSV 文件非常大,当尝试连接数据帧时,我的电脑死机并且出现 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。如果我可以让代码运行并抛出该错误而不会崩溃,我会在这里更新它。