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

时间:2018-07-25 15:31:11

标签: python list pandas indexing

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

如果我的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']

2 个答案:

答案 0 :(得分:4)

您可以使用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']

答案 1 :(得分:3)

来自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']