在multindex DF中按索引值选择

时间:2019-09-04 10:06:59

标签: python pandas

我有这种形式的DataFrame,其中位置和源是索引。 如何在位置索引中按值选择?

               Count
place     source 
market  A         5
        D         4
        B         3
ecomm   A         7
        C         6
        B         4

我尝试过:

df_t[df_t.index.place=="market"]

但是我出错了。

这是理想的结果:

market      A         5
            D         4
            B         3

1 个答案:

答案 0 :(得分:2)

如果输出需要market级,请使用DataFrame.xsdrop_level参数:

df1 = df_t.xs('market', drop_level=False)

您的解决方案可以通过Index.get_level_values进行修改:

df1 = df_t[df_t.index.get_level_values('place')=="market"]

print (df1)
               Count
place  source       
market A           5
       D           4
       B           3

如果需要删除此级别,则输出中不会删除MultiIndex,因为默认值为drop_levelDataFrame.loc

drop_level = True

df2 = df_t.xs('market')