代码之家  ›  专栏  ›  技术社区  ›  Anonymous Person

无法concat dataframes-MemoryError

  •  0
  • Anonymous Person  · 技术社区  · 7 年前

    连接两个数据帧时出现问题。奇怪的是,它第一次起作用了——但只起了一次作用,在我做了一些“聪明的”改变(稍后我将讨论)之后,它没有再做一次,并开始喷出一个记忆棒。我也重新启动了我的机器,它仍然是同一个问题。所以现在的情况是:

    1. 有两个数据文件- a) 火车拼花 b) 元数据.csv
    2. 元数据.csv 具有有关数据类型的信息 火车拼花 是。
    3. 中有4列 metadata.csv 文件,我对其中的三个感兴趣。
    4. 由于我正在处理的问题的类型,我被要求 转置 火车。拼花。这样做的话 在里面 火车拼花 将匹配 元数据.csv . 没有问题。
    5. 所以,首先,我知道 metadata = pd.read_csv("metadata.csv")
    6. 那我会的 train = pd.read_parquet("train.parquet", engine = 'pyarrow').T (.T转座子)
    7. 然后,当我试着 df = pd.concat([train, metadata.col1, metadata.col2, metadata.col3], axis = 'columns') ,我被扔了一个 MemoryError 错误。

    以下是我之前提到的“聪明”变化:

    1. 我最初没有做 .T 论直接训练数据( train=pd.read_parquet(“train.parquet”,引擎=pyarrow').T )
    2. 我做的 original_data = pd.read_parquet("train.parquet", engine = 'pyarrow')
    3. 那么 train = original_data.T -至少对我来说是一样的。
    4. 在这之后,当我 DF= P.CONTAT([MeaDATA.COL1,Meta ADCOL2,元数据,COL3],轴=“列”) ,它成功了->这是它唯一成功的一次。
    5. 但后来我意识到 metadata.col1 最后(因为它是目标变量),所以我想我应该重新运行它,重新排列元数据列的顺序-如下所示: df = pd.concat([train, metadata.col2, metadata.col3, metadata.col1], axis = 'columns') .
    6. 看起来很公平。
    7. 但在我运行之前,我尝试了我后来后悔做的事情——直接转置数据帧( train=pd.read_parquet(“train.parquet”,引擎=pyarrow').T )
    8. 之后,每次尝试连接这两个数据帧时,都会得到内存错误。我还重新启动了我的机器。

    是什么引起的?

    任何帮助都非常感谢。

    提前谢谢。

    编辑 -它是一个64 Gb的Azure虚拟机。

    0 回复  |  直到 7 年前