如果我有一个多索引的数据帧,如何仅在其中一个索引中获取信息?
如果我的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']
答案 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']