Pandas 运行中型合并功能ipython notebook jupyter时出现内存错误

Pandas 运行中型合并功能ipython notebook jupyter时出现内存错误,pandas,out-of-memory,ipython,Pandas,Out Of Memory,Ipython,我试图用for循环合并大约100个数据帧,但得到了一个内存错误。我在用ipython jupyter笔记本 以下是数据示例: timestamp Namecoin_cap 0 2013-04-28 5969081 1 2013-04-29 7006114 2 2013-04-30 7049003 每一帧大约有1000行长 我搜索过类似的问题,但似乎大多数都是针对大于1GB的超大阵列,相比之下,我的数据相对较小 编辑:有点可疑。我以前写过一个测试程序,这是用4个

我试图用for循环合并大约100个数据帧,但得到了一个内存错误。我在用ipython jupyter笔记本

以下是数据示例:

    timestamp   Namecoin_cap
0   2013-04-28  5969081
1   2013-04-29  7006114
2   2013-04-30  7049003
每一帧大约有1000行长

我搜索过类似的问题,但似乎大多数都是针对大于1GB的超大阵列,相比之下,我的数据相对较小

编辑:有点可疑。我以前写过一个测试程序,这是用4个数据帧测试的,我刚刚通过pickle导出了它,它是500kb。现在,当我尝试导出100帧时,我得到一个内存错误。但是,它会导出2GB的文件。所以我怀疑我的代码在某个地方创建了某种循环,创建了一个非常大的文件。注意:100帧存储在字典中

EDIT2:我已经将scrypt导出到.py

该脚本获取有关各种资产的数据,然后将其清理并将每个资产保存到字典中的数据帧中

如果有人能看一下,看看是否有什么问题,我将不胜感激。另外,请告知我可以进行哪些测试

EDIT3:我发现很难理解为什么会发生这种情况,代码在测试版中运行良好,我现在所做的就是添加更多的资产

EDIT4:我对对象(dfs的dict)运行了I size检查,它是1066793字节

EDIT5:问题在于37号硬币的合并功能

for coin in coins[:37]:
    data2['merged'] = pd.merge(left=data2['merged'],right=data2[coin], left_on='timestamp', right_on='timestamp', how='left')
这就是错误发生的时间
对于硬币中的硬币[:36]:“不会产生错误,但是
对于硬币中的硬币[:37]:”会产生错误,有什么想法吗

EDIT6:第36个元素是'Syscoin',我做了硬币。删除('Syscoin'),但是内存问题仍然存在。因此,无论硬币是什么,硬币中的第36个元素似乎都有问题

EDIT7:goCards建议似乎有效,但代码的下一部分:

merged = data2['merged']
merged['Total_MC'] = merged.drop('timestamp',axis=1).sum(axis=1)

产生内存错误。在存储方面,我很困惑,我建议在pickle上使用一个简单的csv。Csv是一种更通用的格式。它是人类可读的,您可以更轻松地检查数据质量,尤其是在数据增长时

file_template_string='%s.csv'
for eachKey in dfDict:
    filename = file_template_string%(eachKey)
    dfDict[eachKey].to_csv(filename)
如果您需要确定文件的日期,还可以在文件名中添加时间戳

import time
from datetime import datetime
cur = time.time()
cur = datetime.fromtimestamp(cur)
file_template_string = "%s_{0}.csv".format(cur.strftime("%m_%d_%Y_%H_%M_%S"))
代码中有一些明显的错误

for coin in coins: #line 61,89
for coin in data: #should be

df = data2['Namecoin'] #line 87
keys = data2.keys()
keys.remove('Namecoin')
for coin in keys:
    df = pd.merge(left=df,right=data2[coin], left_on='timestamp', right_on='timestamp', how='left')

同样的问题也发生在我身上! 《记忆罗》:由《熊猫行刑笔记》撰写。在发布之前,我也用丝网印刷了很多观察结果


重新安装Anaconda没有帮助。后来意识到我是在用IPython笔记本电脑,而不是Jupyter笔记本电脑。切换到Jupyter笔记本。一切都很顺利

您是否尝试过将笔记本转换为py文件并使用python运行?我确实想过这样做,但我想我会先在这里询问。既然这是我的第一个答复,我就试试看now@goCards我想保存数据帧字典,你知道最好的方法是在考虑恢复的情况下保存吗?每个数据帧之间是如何相互关联的?他们有相同的钥匙吗?或者它只是一个水平分割的大表?哇,好吧,我收回我说的,我刚刚导出了数据帧的dict,pickle文件是2GB,不仅如此,我还试图保存它时出现了内存错误。所以我不知道它是否保存正确。每一个框架代表各种资产的时间戳和市值,其名称是dict中的关键。谢谢,我会记住这一点。我的代码中似乎有一些bug,它创建了一个比它应该感兴趣的文件大小更大的文件,所以我进行了修改,仍然得到了内存错误。你能粘贴你的全部代码以便我比较吗?看来问题比预期的要严重。我已经发了另一个帖子,我想让你看看