我有一个非常大的pandas数据帧:~300,000列和~17,520行。 pandas数据帧称为result_full。我试图用numpy.nan替换所有字符串“NaN”:
result_full.replace(["NaN"], np.nan, inplace = True)
这是我得到的地方“MemoryError”是否有一种内存有效的方法来删除我的数据帧中的这些字符串?我尝试了result_full.dropna()但它没有用,因为它们在技术上是“NaN”字符串
答案 0 :(得分:2)
其中一个问题可能是因为使用32位计算机,因为它一次最多可处理2GB数据。如果可能,请扩展到64位计算机以避免将来出现问题。
与此同时,可能会出现这种情况。使用df.to_csv()
选项将数据框转换为CSV。完成后,如果您查看pandas documentation of read_csv中df.read_csv()
的文档,您会注意到此参数
na_values : scalar, str, list-like, or dict, default None
Additional strings to recognize as NA/NaN. If dict passed, specific per-column NA values. By default the following values are interpreted as NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘nan’`.
因此,它应该识别字符串' NaN'作为np.nan,您的问题将得到解决。
同时,如果您通过CSV直接创建此Dataframe,则可以使用此参数来避免内存问题。希望能帮助到你。 干杯!