我想在用多索引构建的pandas数据框中选择列。特别是,我想根据多个二级标签选择列。一个例子:
在以下pandas数据框中:
bar bar baz baz foo foo qux
one two three two one three one
A 0.895717 0.805244 -1.206412 2.565646 1.431256 1.340309 -1.170299
B 0.410835 0.813850 0.132003 -0.827317 -0.076467 -1.187678 1.130127
C -1.413681 1.607920 1.024180 0.569605 0.875906 -2.211372 0.974466
无论第一级标签是什么,如何选择标签为“三”或“两”的第二级所有列?请记住,这只是一个示例数据框,因此只选择所有非“一”的标签不适合我。
我试过
df_b = df.xs(['two','three'],level='second')
或其小变体没有成功。任何帮助表示赞赏。谢谢!
答案 0 :(得分:4)
您可以使用.loc的某种组合。在您的示例中,您可以使用以下代码执行此操作:
idx = pd.IndexSlice
df.loc[idx[:],idx[:,['two','three']]]
这应该返回你想要的东西。这有用吗?