根据pandas数据框

时间:2018-04-24 18:46:42

标签: python pandas

我想在用多索引构建的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') 

或其小变体没有成功。任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:4)

您可以使用.loc的某种组合。在您的示例中,您可以使用以下代码执行此操作:

idx = pd.IndexSlice
df.loc[idx[:],idx[:,['two','three']]]

这应该返回你想要的东西。这有用吗?