【问题标题】:Python Memory Error encountered when replacing NaN values in large Pandas dataframe替换大型 Pandas 数据框中的 NaN 值时遇到 Python 内存错误
【发布时间】:2017-06-01 05:14:14
【问题描述】:

我有一个非常大的 pandas 数据框:~300,000 列和~17,520 行。熊猫数据框称为result_full。我正在尝试用numpy.nan 替换所有字符串"NaN"

result_full.replace(["NaN"], np.nan, inplace = True)

这是我得到MemoryError 的地方有没有一种内存有效的方法可以将这些字符串放入我的数据框中?我尝试了result_full.dropna(),但它不起作用,因为它们在技术上是“NaN”的字符串

【问题讨论】:

    标签: python pandas memory dataframe


    【解决方案1】:

    其中一个问题可能是因为使用了 32 位机器,因为它一次最多可以处理 2GB 的数据。如果可能,请扩展到 64 位机器以避免将来出现问题。

    与此同时,这可能是一个黑客攻击。使用 df.to_csv() 选项将数据帧转换为 CSV。完成后,如果你查看pandas documentation of read_csvdf.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,则可以使用此参数来避免内存问题。希望能帮助到你。 干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-03
      • 2022-10-05
      • 2020-06-19
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      相关资源
      最近更新 更多