Выберите строки, где MultiIndex находится в другом кадре данных - PullRequest
0 голосов
/ 04 мая 2018

У меня есть один DataFrame (DF1) с MultiIndex и много дополнительных столбцов. В другом DataFrame (DF2) у меня есть 2 столбца, содержащие набор значений из MultiIndex. Я хотел бы выбрать строки из DF1, где MultiIndex соответствует значениям в DF2.

df1 = pd.DataFrame({'month': [1, 3, 4, 7, 10],
                    'year': [2012, 2012, 2014, 2013, 2014],
                    'sale':[55, 17, 40, 84, 31]})

df1 = df1.set_index(['year','month'])

            sale
year  month
2012  1     55
2012  3     17
2014  4     40
2013  7     84
2014  10    31

df2 = pd.DataFrame({'year': [2012,2014],
                    'month': [1, 10]})

   year  month  
0  2012   1
1  2014   10

Я хотел бы создать новый DataFrame, который будет:

                 sale
year    month
2012    1        55
2014    10       31

Я пробовал много вариантов, используя .isin, .loc, slice, но продолжаю сталкиваться с ошибками.

1 Ответ

0 голосов
/ 04 мая 2018

Вы можете просто set_index на df2 таким же образом и передать индекс:

In[110]:
df1.loc[df2.set_index(['year','month']).index]

Out[110]: 
            sale
year month      
2012 1        55
2014 10       31

более читаемая версия:

In[111]:
idx = df2.set_index(['year','month']).index
df1.loc[idx]

Out[111]: 
            sale
year month      
2012 1        55
2014 10       31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...