Python 带列表的数据帧多索引切片

Python 带列表的数据帧多索引切片,python,pandas,Python,Pandas,我有一个多索引数据帧,大致如下: score id iso 0 AR 1.0203 BO 1.2303 CN 1.2402 NL 1.1202 SC 1.4552 1 AR 1.2004 BO 2.3030 CN 1.2039 NL 1.6043 SC 1.3949 从这个数据框中,我想获得iso代码列表中“id”=0的所有分数,例如: [

我有一个多索引数据帧,大致如下:

          score
id  iso
0   AR    1.0203
    BO    1.2303
    CN    1.2402
    NL    1.1202
    SC    1.4552
1   AR    1.2004
    BO    2.3030
    CN    1.2039
    NL    1.6043
    SC    1.3949
从这个数据框中,我想获得iso代码列表中“id”=0的所有分数,例如:

['AR'、'CN'、'SC']

通过一个元组列表,我可以获得这些分数,例如:

df.ix[[(0,'AR'),(0,'CN'),(0,'SC')],:]
结果:

          score
id  iso
0   AR    1.0203
    CN    1.2402
    SC    1.4552
现在,在用ix传递元组列表之前,我构建了元组列表。阅读时,我感觉有一种比传递元组列表更有效的方法,但我不知道如何处理它。在这种情况下,如何构建多索引切片器?

您可以使用

或者更简单:

>>> df.loc[(0, ['AR','CN','SC']),:]
或者,或者:

>>> i = df.index.get_level_values(1).isin(['AR','CN','SC'])
>>> j = df.index.get_level_values(0) == 0
>>> df.loc[i & j]
>>> i = df.index.get_level_values(1).isin(['AR','CN','SC'])
>>> j = df.index.get_level_values(0) == 0
>>> df.loc[i & j]