Pandas - 使用MultiIndex DataFrame的标记切入DataFrame

时间:2018-04-18 20:19:46

标签: python pandas

我有一个DataFrame,例如下面的foo。还有一个MultiIndex DataFrame,其索引级别对应foo的前两列,例如下面的foo_multi。我想切入foo,这样我才能获得与foo_multi索引匹配的列值的结果。

foo = pd.DataFrame({'bar':[1,2,3,4,5,3,8,4,4,5],
                    'baz':['a','b','c','d','d','d','d','b','a','a'],
                    'qux':['z','x','c','x','z','z','x','c','c','c']})
foo_multi = foo.groupby(['bar', 'baz']).size().nlargest(3)

>>> foo
   bar baz qux
0    1   a   z
1    2   b   x
2    3   c   c
3    4   d   x
4    5   d   z
5    3   d   z
6    8   d   x
7    4   b   c
8    4   a   c
9    5   a   c
>>> foo_multi
bar  baz
  1    a    1
  2    b    1
  3    c    1
dtype: int64

所以,我正在寻找一种方法,仅使用foofoo_multi将返回

   bar baz qux
0    1   a   z
1    2   b   x
2    3   c   c

1 个答案:

答案 0 :(得分:2)

使用merge to fitler记录:

foo.merge(foo_multi.to_frame(), left_on=['bar','baz'], right_index=True).drop(0, axis=1)

输出:

   bar baz qux
0    1   a   z
1    2   b   x
2    3   c   c