微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pandas 无法为形状为 X 且数据类型为 Y 的数组分配 GiB

如何解决Pandas 无法为形状为 X 且数据类型为 Y 的数组分配 GiB

我正在一个数据框 (df1) 中处理时间序列数据,该数据框有一堆输入列、300 个周期列和 839826 行。

如果我尝试仅通过将这个数据帧的 839826 x 300 部分乘以不同数据帧 (df2) 的类似形状部分来操作它:

df1.iloc[:,0:301] = df1.iloc[:,0:301] * df2.iloc[:,0:301]

我收到此错误

无法为形状为 (301,839826) 且数据类型为 float64 的数组分配 1.88 GiB

我找到了类似问题的答案,但该解决方案适用于 Linux,而我正在使用 Windows。我在网上阅读过我应该使用 dask,但我不确定如何在这里实现它,或者它是否是正确的解决方案。

解决方法

线

df1.iloc[:,0:301] = df1.iloc[:,0:301] * df2.iloc[:,0:301]

首先从乘法的结果中分配一个临时数组/数据帧,然后将其分配到输出中。您可以通过仅执行就地操作来防止这种情况:

df1.iloc[:,0:301] 
df1.iloc[:,0:301] *= df2.iloc[:,0:301]

这可能会让您克服眼前的障碍 - 但确实要调查 Dask,以防您经常面临这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。