Python 使用多个多索引级别删除

Python 使用多个多索引级别删除,python,pandas,Python,Pandas,我有一个多索引数据帧,如下所示: foo c b a p 6 1 3.0 q 7 2 2.3 r 8 3 1.0 s 9 4 100.0 >>> x.drop([('p', 6), ('r',8)]) foo c b a q 7 2 2.3 s 9 4 100.0 我可以使用第一个n多索引级别删除多行,如下所示: foo c b a p 6 1 3.0 q 7 2 2.3 r 8 3 1.0 s 9 4 100.0 >>&g

我有一个多索引数据帧,如下所示:

      foo
c b a
p 6 1 3.0
q 7 2 2.3
r 8 3 1.0
s 9 4 100.0
>>> x.drop([('p', 6), ('r',8)])
      foo
c b a
q 7 2 2.3
s 9 4 100.0
我可以使用第一个
n
多索引级别删除多行,如下所示:

      foo
c b a
p 6 1 3.0
q 7 2 2.3
r 8 3 1.0
s 9 4 100.0
>>> x.drop([('p', 6), ('r',8)])
      foo
c b a
q 7 2 2.3
s 9 4 100.0
我还可以从单个级别:

>>> x.drop([1, 2], level='a')
      foo
c b a
r 8 3 1.0
s 9 4 100.0
但我似乎无法在多个级别上执行此操作(除了第一个
n
):


因此,如何从数据帧中删除
[(8,3)、(9,4)]
(即第3行和第4行)?

此功能尚未实现,请参阅此问题:

但是你可以这样做

In [19]: mask = df.index.get_level_values

In [20]: df.loc[~(mask('b').isin([8,9]) & mask('a').isin([3,4]))]
Out[20]: 
       foo
c b a     
p 6 1  3.0
q 7 2  2.3