“元组指数超出范围”阅读大熊猫腌制面板

时间:2014-04-30 08:29:38

标签: python-2.7 pandas

数据是pandas Panel

data <class 'pandas.core.panel.Panel'> Dimensions: 16 (items) x 1954 (major_axis) x 6 (minor_axis) Items axis: ADRE to SPY Major_axis axis: 2004-12-01 00:00:00+00:00 to 2012-08-31 00:00:00+00:00 Minor_axis axis: open to price

保存到磁盘

pandas.to_pickle(data, 'data.pkl')

但是当我尝试阅读pkl文件时

pandas.read_pickle('data.pkl')

我明白了:

  

`   -------------------------------------------------- ------------------------- IndexError Traceback(最近一次调用   最后)in()         1种打印类型(数据)         2 data.to_pickle(&#39; G:\ temp \ test.pkl&#39;)   ----&GT; 3 pd.read_pickle(&#39; G:\ temp \ test.pkl&#39;)

     

C:\ Python27 \ lib中\站点包\大熊猫-0.13.1-py2.7-win32.egg \大熊猫\ IO \ pickle.pyc   在read_pickle(路径)        47        48尝试:   ---&GT; 49返回try_read(路径)        50除外:        51如果PY3:

     

C:\ Python27 \ lib中\站点包\大熊猫-0.13.1-py2.7-win32.egg \大熊猫\ IO \ pickle.pyc   在try_read(路径,编码)        44除外:        45开放(路径,&#39; rb&#39;)为fh:   ---&GT; 46 return pc.load(fh,encoding = encoding,compat = True)        47        48尝试:

     

C:\ Python27 \ lib中\站点包\大熊猫-0.13.1-py2.7-win32.egg \大熊猫\ COMPAT \ pickle_compat.pyc   in load(fh,encoding,compat,is_verbose)        87 up.is_verbose = is_verbose        88   ---&GT; 89 return up.load()        90除外:        91提高

     

C:\ Python27 \ lib \ pickle.pyc in load(self)       856而1:       857键=读(1)    - &GT; 858 dispatchkey       859除了_Stop,stopinst:       860返回stopinst.value

     

C:\ Python27 \ lib中\站点包\大熊猫-0.13.1-py2.7-win32.egg \大熊猫\ COMPAT \ pickle_compat.pyc   在load_reduce(个体经营)        16 args = stack.pop()        17 func = stack [-1]   ---&GT; 18如果type(args [0])是type:        19 n = args [0]。名称        20如果n == u(&#39; DeprecatedSeries&#39;)或n == u(&#39; DeprecatedTimeSeries&#39;):

     

IndexError:元组索引超出范围

     

`

     

我可以解决这个问题,但我的问题是&#34;我正在使用/正确使用泡菜&#34;?

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。这是pandaspytz之间的不兼容。问题在这里:

https://github.com/pydata/pandas/issues/6871

你可以通过直接解开来解决它:

with open('file_name.pkl', 'rb') as f: panel = pickle.load(f)

答案 1 :(得分:1)

泡菜由以下人员保存:

 panel.to_pickle('file_name.pkl')

您似乎没有使用字符串文件名并且正在添加额外的(非引用的)参数。

阅读也使用引用文件名

 pd.read_pickle('file_name.pkl')

在Windows上的python 27-32位

Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import pandas as pd
>>> np.__version__
'1.7.1'
>>> pd.__version__
'0.13.1-791-g07f6d46'
>>> from pandas.util import testing as tm
>>> panel = tm.makePanel()
>>> pd.to_pickle(panel,'test.pkl')
>>> pd.read_pickle('test.pkl')
<class 'pandas.core.panel.Panel'>
Dimensions: 3 (items) x 30 (major_axis) x 4 (minor_axis)
Items axis: ItemA to ItemC
Major_axis axis: 2000-01-03 00:00:00 to 2000-02-11 00:00:00
Minor_axis axis: A to D

所以不确定是什么数据,可能会显示复制品