无法连接数据帧-MemoryError

时间:2019-03-13 10:49:36

标签: python pandas dataframe parquet pyarrow

我在连接两个数据帧时遇到问题。奇怪的是,它第一次起作用,但只有一次,在我做了一些“明智的”更改(稍后将讨论)之后,它没有再做一次,而是开始发出MemoryError。我还重新启动了机器,仍然是同样的问题。所以这是怎么回事:

  1. 有两个数据文件- 一)train.parquet b)metadata.csv
  2. metadata.csv 具有有关 train.parquet 数据类型的信息。
  3. metadata.csv文件中有4列,我感兴趣的是其中的三列。
  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. 我最初不直接对培训数据进行.Ttrain = 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(因为它是目标变量),所以我想我会重新运行它以重新排列元数据列的顺序-像这样:{{1 }}。
  6. 似乎公平。
  7. 但是在运行该功能之前,我尝试了以后会后悔的事情-直接转置数据帧(df = pd.concat([train, metadata.col2, metadata.col3, metadata.col1], axis = 'columns')
  8. 此后,每次尝试连接两个数据帧时,都会收到内存错误。我还重新启动了计算机。

是什么原因造成的?

非常感谢您的帮助。

谢谢。

编辑-这是64 Gb Azure VM。

0 个答案:

没有答案