pandas .DataFrame.to_hdf () завершается ошибкой на объекте dtypes - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь экспортировать pandas DataFrame в hdf5-файл. DataFrame, имеющий следующую структуру:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   a       4 non-null      float64
 1   b       4 non-null      float64
 2   c       4 non-null      float64
 3   d       4 non-null      object 
dtypes: float64(3), object(1)
memory usage: 256.0+ bytes

В столбце d я сохраняю некоторые пути к файлам как тип. <class 'pathlib.WindowsPath'>

Если я вызову функцию to_hdf () следующим образом df.to_hdf(r'C:\data\test.h5', mode='w', key=key,format='table', data_columns=True), я получу следующую ошибку.

File "C:\py36_4\lib\site-packages\pandas\io\pytables.py", line 4800, in _maybe_convert_for_string_atom
    for i in range(len(block.shape[0])):
TypeError: object of type 'int' has no len()

Если я пропущу столбец d, экспорт в hdf5 будет работает как положено. Поэтому, похоже, проблема столбца d и используемого типа '<class 'pathlib.WindowsPath'>'?

1 Ответ

0 голосов
/ 21 апреля 2020

Я не могу подтвердить ваши наблюдения. Последние версии pandas и таблиц теперь поддерживают сериализацию Pathlib Path. Может быть, вы должны

pip install --upgrade pandas tables
...