我有一个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
所以,我正在寻找一种方法,仅使用foo
和foo_multi
将返回
bar baz qux
0 1 a z
1 2 b x
2 3 c c
答案 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