Ошибка при чтении файлов HDF в Python 3.7 с функцией Pandas.read_hdf - PullRequest
0 голосов
/ 15 октября 2019

Ранее я сохранял несколько столбцов набора данных в одном файле HDF. Процедура может быть изложена следующим образом:

import pandas as pd
from pandas import HDFStore, DataFrame
from pandas import read_hdf

hdf = HDFStore("FILE.h5")
feature =  ['var1','var2']
## noted that the original dataframe is huge, and thus fake dataframe was generated as example.
for k in range(0,len(feature),1):
    df = {'A':['1','2','3','4'],'B':[4,5,6,7]}
    df  = pd.DataFrame(df)
    hdf.put(feature[k], df, format='table', encoding="utf-8")

Затем я могу прочитать файл 'FILE.h5', просто используя

df = pd.read_hdf("./FILE.h5,'var1',encoding = 'utf-8')

Он всегда работал хорошо, пока я не обновил свойСреда Python от 2.7 до 3.7.

На данный момент в Python 3.7 и Pandas 0.24.2 файл HDF не может быть правильно прочитан. Ошибка показывает, как:

df = pd.read_hdf("./FILE.h5,'var1',encoding = 'utf-8')
>>> ...
~/anaconda3/lib/python3.7/codecs.py in getdecoder(encoding)
    961 
    962     """
--> 963     return lookup(encoding).decode
    964 
    965 def getincrementalencoder(encoding):

TypeError: lookup() argument must be str, not numpy.bytes_

PS

Я прочитал GitHub выпуск , который был похож на мою ситуацию. Но это не могло решить мою проблему. Затем я решил использовать пакет h5py для файлов формата hdf5, но это было не так удобно, как для панд.

Любые советы или методы были высоко оценены!

1 Ответ

1 голос
/ 15 октября 2019

Я думаю, что у вас есть предыдущая ошибка с пандами (так как вы используете версию 0.13). Из Github Issues 12304 и 11126 указывают, что в read_hdf есть ошибка при попытке передать кодировки в версиях под 0.17.

Можно ли перейти на современную версию панд, поскольку вы уже используете 3.7?

...