从多索引数据帧中获取一个索引

Posted

技术标签:

【中文标题】从多索引数据帧中获取一个索引【英文标题】:Get one index from multiindexed dataframe 【发布时间】:2019-01-02 11:59:01 【问题描述】:

如果我有一个多索引数据框,我如何才能仅在其中一个索引中获取信息?

如果我的 df 是这样的:

first  second
bar    one       0.469112
       two      -0.282863
baz    one      -1.509059
       two      -1.135632
foo    one       1.212112
       two      -0.173215
qux    one       0.119209
       two      -1.044236

我想要索引first 中的值列表。我习惯做这样的事情:

df.index.tolist()

返回:

['bar','baz','foo','qux']

【问题讨论】:

@akashkarothiya 输出返回列表 【参考方案1】:

来自 jpp 的数据

df.index.levels[0]
Out[412]: Index(['A', 'X'], dtype='object', name='idx1')

更新:

[x[0] for x in df.index.tolist()]
Out[417]: ['A', 'A', 'X', 'X']

【讨论】:

注意可以在末尾添加tolist df.index.levels[0].tolist() 【参考方案2】:

您可以使用pd.Index.get_level_values。这是一个演示:

df = pd.DataFrame([['A', 'B', 1], ['A', 'C', 2], ['X', 'Y', 3], ['X', 'Z', '4']],
                  columns=['idx1', 'idx2', 'value'])

df = df.set_index(['idx1', 'idx2'])

res = df.index.get_level_values(0).tolist()

['A', 'A', 'X', 'X']

【讨论】:

也许我忽略了这个问题,好像他需要关卡,对吗? @Wen,嗯,实际上你可能是。我们会看到.. 我读到他想要df.index.tolist() 的等价物,但只是一个级别。 是的,这正是我想要的。相当于df.index.tolist()

以上是关于从多索引数据帧中获取一个索引的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:在多索引数据帧中重新索引和插值

如何获取多索引数据帧的前两个索引的字典

使用索引值列表对 pandas 多索引数据框进行切片 [重复]

基于布尔值从一片多索引数据帧中删除行

Pandas 多索引数据框 - 从多索引中的一个索引中选择最大值

访问熊猫数据框中内部多索引级别的最后一个元素