数据是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;?
答案 0 :(得分:2)
我遇到了同样的问题。这是pandas
和pytz
之间的不兼容。问题在这里:
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
所以不确定是什么数据,可能会显示复制品