首页 > 解决方案 > 无法连接数据帧 - MemoryError

问题描述

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

  1. 有两个数据文件 - a) train.parquet b) metadata.csv
  2. metadata.csv包含有关train.parquet数据类型的信息。
  3. 文件中有 4 列metadata.csv,我对其中的 3 列感兴趣。
  4. 由于我正在处理的问题类型,我被要求转置train.parquet。这样做, train.parquet 中的行匹配metadata.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直接对训练数据做 a ( train = pd.read_parquet("train.parquet", engine = 'pyarrow').T)
  2. 我做了original_data = pd.read_parquet("train.parquet", engine = 'pyarrow')
  3. 然后train = original_data.T- 做几乎同样的事情,至少对我来说。
  4. 在此之后,当我这样做时df = pd.concat([train, metadata.col1, metadata.col2, metadata.col3], axis = 'columns'),它起作用了->这是它唯一起作用的时间。
  5. 但后来我意识到,我实际上想要metadata.col1最后(因为它是目标变量),所以我想我会重新运行它重新排列元数据列的顺序 - 像这样:df = pd.concat([train, metadata.col2, metadata.col3, metadata.col1], axis = 'columns').
  6. 看起来很公平。
  7. 但在我运行它之前,我尝试了我后来后悔的做法——直接转置数据帧(train = pd.read_parquet("train.parquet", engine = 'pyarrow').T
  8. 在此之后,每次我尝试连接两个数据帧时,都会出现内存错误。我也重新启动了我的机器。

这可能是什么原因造成的?

任何帮助是极大的赞赏。

提前致谢。

编辑- 这是一个 64 Gb Azure VM。

标签: pythonpandasdataframeparquetpyarrow

解决方案


推荐阅读