Pandas:将多个多列设置为多重索引

2024-05-29 11:22:15 发布

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

我生成一个空数据帧,如下所示:

topFields = ['desc', 'desc', 'price', 'price', 'units', 'units']
bottomFields = ['foo', 'bar', 'mean', 'mom_2', 'mean', 'mom_2']
resultsDf = pd.DataFrame(columns=pd.MultiIndex.from_arrays([topFields, bottomFields]))

现在我想将前两列(以desc作为顶层值)设置为索引(,而更一般的挑战是,所有列,其中desc作为顶层值)。我试过好几种方法,但都不管用。在

以下是最直观的(失败):

^{pr2}$

pandas正确地删除了desc列(从“columns”)中,但是这些列都没有出现在索引中。相反,索引中只有一个字段。当我试图基于多重索引创建一行时,我得到一个错误:

>>> test.loc[pd.IndexSlice[0, 0], :] = 1
Traceback (most recent call last):
[...]
KeyError: '[0 0] not in index'

Tags: columns数据dataframefoobarmeanpricedesc
1条回答
网友
1楼 · 发布于 2024-05-29 11:22:15

看起来需要^{}按元组排列:

test = resultsDf.set_index(('desc', 'foo'))
print (test)
Empty DataFrame
Columns: [(desc, bar), (price, mean), (price, mom_2), (units, mean), (units, mom_2)]
Index: []

print (test.index)
Index([], dtype='object', name=('desc', 'foo'))

或者可能:

^{pr2}$

相关问题 更多 >

    热门问题