Ранее я сохранял несколько столбцов набора данных в одном файле 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, но это было не так удобно, как для панд.
Любые советы или методы были высоко оценены!