pandas 根据多指标水平值删除观察值

pandas remove observations depending on multi-index level value

我有一个多索引数据框,级别为 'id' 和 'year':

              value    
id      year           
10      2001   100     
        2002   200         
11      2001   110          
12      2001   200     
        2002   300     
13      2002   210

我想保留具有 2001 年和 2002 年值的 ids。这意味着我想获得:

              value    
id      year           
10      2001   100     
        2002   200         
12      2001   200     
        2002   300      

我知道 df.loc[df.index.get_level_values('year') == 2002] 有效,但我无法将其扩展到 2001 年和 2002 年。 提前致谢。

如何使用 groupbyfilter:

df.groupby(level=0).filter(
    lambda df:np.in1d([2001, 2002], df.index.get_level_values(1)).all()
)