我试图用整数索引替换大型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)
我试过循环遍历字符串列表。这减少了内存开销,但效率非常低,运行时间太长(比隔夜更长)。
非常感谢任何帮助。