考虑这个数据框:
np.random.seed(0)
index = pd.MultiIndex.from_product([['a', 'b'], ['c', 'd'], ['e', 'f']], names=['first', 'second', 'third'])
df = pd.DataFrame(data=np.random.randint(0,10,size=(8, 3)), index=index, columns=['foo', 'bar', 'baz'])
foo bar baz
first second third
a c e 5 0 3
f 3 7 9
d e 3 5 2
f 4 7 6
b c e 8 8 1
f 6 7 7
d e 8 1 5
f 9 8 9
df.loc[['a', 'b'], :, 'e']
工作并返回
foo bar baz
first second third
a c e 5 0 3
d e 3 5 2
b c e 8 8 1
d e 8 1 5
但是 df.loc[:, : 'e']
给出了一个错误。
那么如何使用 :
语法获取最外层索引级别的所有值?
最佳答案
您应该使用 IndexSlice
的多个索引
df.loc[pd.IndexSlice[:,:,'e'],]
Out[566]:
foo bar baz
first second third
a c e 5 0 3
d e 3 5 2
b c e 8 8 1
d e 8 1 5
或者查询
df.query("third=='e'")
Out[568]:
foo bar baz
first second third
a c e 5 0 3
d e 3 5 2
b c e 8 8 1
d e 8 1 5
关于python - Pandas - 子集数据框 - 获取最外层索引级别的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57292368/