Pickle not able to save dataframes
我正在尝试使用pickle来保存我通过其他数据集生成的少量大型数据集。 虽然转储它并没有给我任何错误但是当我尝试加载这些数据集pickle退出时出现eof错误。 下面是我为保存数据集而运行的代码:
1 2 3 4 5 6 7 8 9 10 11 | from scipy.stats.mstats import mode trainingSetCustomers = pd.DataFrame({'visitFrequency': trainingSet.size(),'totalAmountSpent': trainingSet['amountSpent'].sum(),'totalProducts': trainingSet['productCount'].sum(),'firstVisit': trainingSet['visitDate'].min(),'lastVisit': trainingSet['visitDate'].max(),'visitType':trainingSet['visitType'].apply(f),'country': trainingSet['country'].apply(f),'isReferred':trainingSet['isReferred'].sum()}).reset_index() p2 = pickle.Pickler(open("trainingSetCustomers.p","wb")) #finaldatasetYear1AndYear2 #trainingset groupedCustomersWithDates dfOrdersNew groupedCustomersNew p2.clear_memo() p2.dump(trainingSetCustomers) print"Training Set saved" #Done trainingResultSetCustomers = pd.DataFrame({'futureVisitFrequency': trainingResultSet.size(),'futureTotalAmountSpent': trainingResultSet['amountSpent'].sum(),'futureTotalProducts': trainingResultSet['productCount'].sum(),'firstVisit': trainingResultSet['visitDate'].min(),'lastVisit': trainingResultSet['visitDate'].max(),'visitType':trainingResultSet['visitType'].apply(f),'country': trainingResultSet['country'].apply(f),'isReferred':trainingResultSet['isReferred'].sum()}).reset_index() p3 = pickle.Pickler(open("trainingResultSetCustomers.p","wb")) #finaldatasetYear1AndYear2 #trainingset groupedCustomersWithDates dfOrdersNew groupedCustomersNew p3.clear_memo() p3.dump(trainingResultSetCustomers) print"trainingresult set saved" #Done |
这样运行没有任何错误并打印消息。
但是当我运行以下代码时:
1 | trainingResultSetCustomers = pickle.load( open("trainingResultSetCustomers.p","rb" ) ) |
它给了我一个EoFError。 我需要存储4种这样的测试集,我真的很困惑,为什么会发生这种情况。 如果这有任何区别,我通过ssh在IPython笔记本上运行它。
此外,如果我尝试只有5行它完美的工作
数据结构:从代码中可以看出,该数据帧是由分组对象的属性生成的。
这是我得到的错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | EOFError Traceback (most recent call last) <ipython-input-10-86d38895c564> in <module>() 5 p = pickle.Pickler(o) #finaldatasetYear1AndYear2 #trainingset groupedCustomersWithDates dfOrdersNew groupedCustomersNew 6 p.clear_memo() ----> 7 trainingset = pickle.load(o) 8 o.close() 9 print"done" /usr/lib/python2.7/pickle.pyc in load(file) 1376 1377 def load(file): -> 1378 return Unpickler(file).load() 1379 1380 def loads(str): /usr/lib/python2.7/pickle.pyc in load(self) 856 while 1: 857 key = read(1) --> 858 dispatch[key](self) 859 except _Stop, stopinst: 860 return stopinst.value /usr/lib/python2.7/pickle.pyc in load_eof(self) 878 879 def load_eof(self): --> 880 raise EOFError 881 dispatch[''] = load_eof 882 |
在没有一些测试代码和版本号的情况下,我唯一能看到的是你正在使用
和内部的链接。
并且,根据您尝试腌制的
此外,如果您通过