python - 无法连接数据帧 - MemoryError
问题描述
我在连接两个数据帧时遇到问题。奇怪的是,它第一次起作用了——但只有一次,在我做了一些“聪明”的改变(我将在后面讨论)之后,它没有再做一次,并开始喷出 MemoryError。我也重新启动了我的机器,它仍然是同样的问题。所以这就是发生的事情:
- 有两个数据文件 - a) train.parquet b) metadata.csv
- metadata.csv包含有关train.parquet数据类型的信息。
- 文件中有 4 列
metadata.csv
,我对其中的 3 列感兴趣。 - 由于我正在处理的问题类型,我被要求转置train.parquet。这样做, train.parquet 中的行数将匹配metadata.csv。那里没有问题。
- 所以,首先,我愿意
metadata = pd.read_csv("metadata.csv")
- 然后我做
train = pd.read_parquet("train.parquet", engine = 'pyarrow').T
(.T转置) - 然后,当我尝试时
df = pd.concat([train, metadata.col1, metadata.col2, metadata.col3], axis = 'columns')
,我被抛出一个MemoryError
错误。
这是我之前提到的“聪明”变化:
- 我最初没有
.T
直接对训练数据做 a (train = pd.read_parquet("train.parquet", engine = 'pyarrow').T
) - 我做了
original_data = pd.read_parquet("train.parquet", engine = 'pyarrow')
- 然后
train = original_data.T
- 做几乎同样的事情,至少对我来说。 - 在此之后,当我这样做时
df = pd.concat([train, metadata.col1, metadata.col2, metadata.col3], axis = 'columns')
,它起作用了->这是它唯一起作用的时间。 - 但后来我意识到,我实际上想要
metadata.col1
最后(因为它是目标变量),所以我想我会重新运行它重新排列元数据列的顺序 - 像这样:df = pd.concat([train, metadata.col2, metadata.col3, metadata.col1], axis = 'columns')
. - 看起来很公平。
- 但在我运行它之前,我尝试了我后来后悔的做法——直接转置数据帧(
train = pd.read_parquet("train.parquet", engine = 'pyarrow').T
) - 在此之后,每次我尝试连接两个数据帧时,都会出现内存错误。我也重新启动了我的机器。
这可能是什么原因造成的?
任何帮助是极大的赞赏。
提前致谢。
编辑- 这是一个 64 Gb Azure VM。
解决方案
推荐阅读
- oracle - 如何在 Oracle Reports 中正确对齐框架内的对象
- javascript - jquery函数在表的第二页上不起作用
- c# - 在同一解决方案中找不到引用项目的类型或命名空间
- java - 在“docker run imagename”命令上按顺序(不是同时)运行多个 Jar 文件
- c++ - 在 C++ 中获取旋转的音高
- c++ - clang 插件:在编译期间修改 AST
- ruby-on-rails - Rails 添加 pass 变量以从循环创建新记录
- sql - 使用JPA在Sql中具有不同值的多个语句where子句
- oracle - LocalDateTime 映射到 Oracle DATE,但不映射到 H2 DATE
- c# - 在 C# 中将用户名转换为 SID