【问题标题】:Pandas pd.melt throwing memory error on unpivoting 3.5 GB csv while using 500GB ramPandas pd.melt 在使用 500GB ram 时在 unpivoting 3.5 GB csv 时抛出内存错误
【发布时间】:2019-09-15 13:45:20
【问题描述】:

Pandas pd.melt 在使用 500GB 内存时对 3.5GB csv 进行反透视时抛出内存错误。是否有任何解决方案/功能可用于 unpivot 巨大的 CSV 文件?当前的 csv 有超过 5000 列。

【问题讨论】:

  • 我自己没有尝试过,所以这只是一个建议,但是您是否尝试将数据帧按行划分以使其更小,然后在最后连接。您可以轻松地循环执行此操作。
  • @run-out 我在同样的问题上苦苦挣扎并尝试了你的建议,逐行迭代并在最后连接确实使融化速度更快。我将在下面提供我的解决方案。

标签: python-3.x pandas csv read.csv


【解决方案1】:

我在同样的问题上苦苦挣扎,偶然发现了你的话题。这是我对@run-out 建议的实现(按块迭代并连接):

pivot_list = list()
chunk_size = 100000

for i in range(0,len(df_final),chunk_size):
    row_pivot =df_final.iloc[i:i+chunk_size].melt(id_vars=new_vars,value_vars=new_values)
    pivot_list.append(row_pivot)

df = pd.concat(pivot_list)

非常简单,但这确实使融化更快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-25
    • 2013-07-07
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多