Выборочное чтение pandas-данных, содержащих столбцы смешанного типа - PullRequest
0 голосов
/ 28 августа 2018

У меня есть таблицы панд со столбцом, содержащим списки длины переменной с тысячами строк, например,

import pandas as pd
df = pd.DataFrame({0: [[1, 2], [3, 4, 5], [7], [8, 9, 10, 11]]}, )

###Output: 
df
                0
0          [1, 2]
1       [3, 4, 5]
2             [7]
3  [8, 9, 10, 11]

Я могу сохранить файл на диске с помощью

with pd.HDFStore('out_file', mode='w') as store:
      df.to_hdf(store, key='data1')

, но не использует следующее, потому что тип столбца object.

with pd.HDFStore('out_file', mode='w') as store:
      df.to_hdf(store, key='data1', format='table', data_columns=True)

Как я могу прочитать несколько индексов из файла вместо того, чтобы прочитать весь файл и затем удалить нежелательные строки? Если hdf5 не может обрабатывать запросы для этого типа фрейма данных, то каковы альтернативные форматы данных. Спасибо.

1 Ответ

0 голосов
/ 28 августа 2018

Я нашел один обходной путь - сохранить данные в виде str строк, чтобы читать только отдельные строки,

import pandas as pd
df = pd.DataFrame({0: [[1, 2], [3, 4, 5], [7], [8, 9, 10, 11]]}, )

# Write
with pd.HDFStore('out_file', mode='w') as store:
      df.astype(str).to_hdf(store, key='data1', format='table', data_columns=True)

# Now Read some rows
d.read_hdf('out_file', key='data1', where='index >1 & index < 2')
...