是否有一种内存有效的方法来替换pandas数据帧中的值列表?

时间:2014-10-21 17:04:14

标签: python-2.7 pandas memory-management replace large-data

我试图用整数索引替换大型pandas数据帧(150万行,大约15列)中的所有唯一字符串。我的问题是我的数据帧是2Gigs,我的唯一字符串列表最终有大约八万或更多的条目。

要生成我使用的唯一字符串列表:

unique_string_list = pd.unique(df.values.ravel()).tolist()

然后,如果我尝试使用df.replace()或者使用一对列表或者使用字典,那么对于我的8 GAG RAM来说,内存开销太大了。问题在于替换列表的大小,所以即使我只使用数据帧的几千行块,它也会占用所有RAM:

mapdict = dict(zip(unique_string_list, range(len(unique_string_list))))
replacedict = dict(zip(df.columns.values, [mapdict for column in df.columns.values]))
df.replace(replacedict)

我试过循环遍历字符串列表。这减少了内存开销,但效率非常低,运行时间太长(比隔夜更长)。

非常感谢任何帮助。

0 个答案:

没有答案