Я хочу прочитать только 10 строк из h5 файла:прочитанной п строк из файла с h5
df = pd.read_hdf('data.h5', 'cleanuserbase', start=0, stop=10)
Но это не работает, потому что он читает все строки.
Я хочу прочитать только 10 строк из h5 файла:прочитанной п строк из файла с h5
df = pd.read_hdf('data.h5', 'cleanuserbase', start=0, stop=10)
Но это не работает, потому что он читает все строки.
Это работает, только если ваш объект является табличным форматом (а не fixed format).
In [11]: df = pd.DataFrame(np.random.randn(100, 2))
In [12]: store = pd.HDFStore('store.h5')
In [13]: df.to_hdf("store.h5", "df", format="table")
In [14]: store.select("df", "index < 2")
Out[14]:
0 1
0 -0.245982 -1.047534
1 -0.633943 -1.218812
In [15]: pd.read_hdf("store.h5", "df", start=0, stop=2) # works if non-integer index
Out[15]:
0 1
0 -0.245982 -1.047534
1 -0.633943 -1.218812
Смотрите в документации table format.
Если таблица фиксированного формата может быть прочитана только в целом (но, возможно, this should raise):
In [21]: df.to_hdf("store.h5", "fixed_df", format="fixed")
In [22]: pd.read_hdf("store.h5", "fixed_df", start=0, stop=2)
Out[22]:
0 1
0 2.532604 -0.084852
1 0.735833 -1.100600
2 -0.415245 -2.050627
3 -0.915045 -0.638667
... # and all the other rows
Это не реализована для fixed
магазинов ATM (но работает table
магазинах, см Ответ Энди), см. Открытый выпуск here
Тем не менее, сами магазины фактически поддерживают индексацию. Его просто не построили. Это заглядывает внутрь.
In [35]: df = DataFrame(np.random.randn(10,2),columns=list('ab'))
In [36]: store = pd.HDFStore('test.h5',mode='w')
In [37]: store.put('df',df)
In [38]: store
Out[38]:
<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
/df frame (shape->[10,2])
In [39]: mask = slice(4,10)
In [40]: s = store.get_storer('df').storable
In [41]: DataFrame(s.block0_values[mask],index=s.axis1[mask],columns=s.axis0)
Out[41]:
axis0 a b
4 -1.347325 -0.936605
5 -0.342814 -0.452055
6 0.951228 0.160918
7 -0.096133 0.816032
8 -0.731431 1.190047
9 -1.050826 0.348107
In [42]: store.close()
Я полагаю, это может поднять NotImplementedError
, пока эта проблема не будет решена.
Индексы в моем файле не известны. –
@AlexanderSupertramp это работает (начало и остановка) с нецелым индексом. –
@AlexanderSupertramp. Запустите и остановите работу для вас с помощью формата = таблицы? Используете ли вы последнюю версию панд? –