2017-01-29 5 views
2

Я получаю эту ошибкуValueError: неподдерживаемый протокол рассол: 4 с пандами

ValueError: unsupported pickle protocol: 4 

от этой линии моего кода

full_df = pd.read_pickle('df_userID.pickle') 

при выполнении сценария с python2.7

(на Ubuntu 14.04.5, 3.13.0-95-generic)

Спасибо за помощь.

+1

Можете ли вы предоставить 'df_userID.head()', чтобы его можно было протестировать. – MYGz

+0

уверен: вот 1-я строка информационного фрейма https://www.dropbox.com/s/ic7brs7tq5xpt7y/trial_copy.pickle?dl=0 – jjrr

+0

Как вы создали свой файл рассола? – MaxU

ответ

4

Похоже, этот файл рассол был создан как выглядит следующим образом:

pickle.dump(df, file_name, protocol=4) 

или

pickle.dump(df, file_name, protocol=-1) 

и Python 2.x принимает только протоколы: 0, 1, 2

либо использовать Pandas травление или низшей версии протокола:

df.to_pickle('/path/to/df.pickle') # preferred and version independent solution 

или:

pickle.dump(df, '/path/to/df.pickle', protocol=2) 

другой вариант будет использовать HDFStore (H5) или FeatherFormat - оба варианта очень быстро и надежно.

+0

Спасибо, теперь я понимаю. Он был создан одним из моих сотрудников. Другое решение - просто использовать python3, но есть еще одна проблема - поэтому я перешел на python2. У меня проблема с обновлением pandas после, я получаю эту ошибку 'ImportError: Нет модуля с именем 'pandas.indexes' ' – jjrr

+0

@jjrr, вы можете проверить [this] (http://stackoverflow.com/questions/37371451/ importerror-no-module-named-pandas-indexes) – MaxU

+0

да, это именно то, что я сделал .. но это не работает. 'pip3 show pandas' дает мне еще 0.13.1, а' pip show pandas' 0.19.2 – jjrr