2015-06-20 1 views
0

У меня есть кадр данных многоиндексной с уровнями «ид» и «год»:панды удалить наблюдения в зависимости от значения уровня многоиндексной

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

Я хочу, чтобы сохранить id S, которые имеют значения для обоих 2001 и 2002 годы Это означает, что я хочу получить:

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

Я знаю, что df.loc[df.index.get_level_values('year') == 2002] работает, но я не могу продлить, что к ответственности за 2001 и 2002 Спасибо заранее.

ответ

1

Как об использовании groupby и filter:

df.groupby(level=0).filter(
    lambda df:np.in1d([2001, 2002], df.index.get_level_values(1)).all() 
) 
Смежные вопросы