如何从HDFStore检索多索引?

2024-06-25 23:55:07 发布

您现在位置:Python中文网/ 问答频道 /正文

如果数据帧具有简单索引,则可以按如下方式从HDFStore检索索引:

df = pd.DataFrame(np.random.randn(2, 3), index=list('yz'), columns=list('abc'))
df

>>>      a          b           c
>>> y   -0.181063   1.919440    1.550992
>>> z   -0.701797   1.917156    0.645707
with pd.HDFStore('test.h5') as store:
    store.put('df', df, format='t')
    store.select_column('df', 'index')

>>> 0    y
>>> 1    z
>>> Name: index, dtype: object

docs中所述

但在使用多索引的情况下,这样的技巧不起作用:

df = pd.DataFrame(np.random.randn(2, 3),
                  index=pd.MultiIndex.from_tuples([(0,'y'), (1, 'z')], names=['lvl0', 'lvl1']),
                  columns=list('abc'))
df

>>>                 a           b           c
>>> lvl0    lvl1            
>>>    0       y    -0.871125   0.001773     0.618647
>>>    1       z     1.001547   1.132322    -0.215681

更准确地说,它返回错误的索引:

with pd.HDFStore('test.h5') as store:
    store.put('df', df, format='t')
    store.select_column('df', 'index')

>>> 0    0
>>> 1    1
>>> Name: index, dtype: int64

如何检索正确的数据帧多索引


Tags: columns数据storetestdataframedfindexwith
1条回答
网友
1楼 · 发布于 2024-06-25 23:55:07

可以使用select并指定columns=['index']参数:

df = pd.DataFrame(np.random.randn(2, 3),
                  index=pd.MultiIndex.from_tuples([(0,'y'), (1, 'z')], names=['lvl0', 'lvl1']),
                  columns=list('abc'))
df

>>>                 a           b           c
>>> lvl0    lvl1            
>>>    0       y    -0.871125   0.001773     0.618647
>>>    1       z     1.001547   1.132322    -0.215681
with pd.HDFStore('test.h5') as store:
    store.put('df', df, format='t')
    store.select('df', columns=['index'])

>>> lvl0    lvl1
>>>    0       y
>>>    1       z

它工作,但似乎不是documented

相关问题 更多 >