MultiIndex Slicing дает мне 'Keyerror' - PullRequest
0 голосов
/ 16 мая 2019

У меня есть фрейм данных с индексом (ID, дата), где я хотел бы выбрать все наблюдения в течение определенного периода времени (например, 06-1988: 11-1988). В случае, если не все наблюдения присутствуют в пределах временного интервала для определенного идентификатора, я все же хотел бы включить те, которые присутствуют .

Визуализация моего фрейма данных для лучшего понимания: (Панель не сбалансирована)

                           Var1          Var2
    ID     Date
    10113  2010-07         24.7000       24.7000      
           2010-08         25.2600       24.7000      
           2010-09         25.2800       25.2800  
           2010-10         25.3700       25.3700 
    10223  2010-09         24.7000       24.7000
           2010-10         25.2600       25.2600    
           2011-11         25.2800       25.2800  
           2011-12         25.3700       25.3700 
           2012-01         25.2900       25.2900 

Например, я хотел бы, чтобы все наблюдения между 2010-09 и 2011-12 гг. Я хотел бы получить следующий вывод:

                           Var1          Var2
    ID     Date
    10113  2010-09         25.2800       25.2800  
           2010-10         25.3700       25.3700        
    10223  2010-09         24.7000       24.7000
           2010-10         25.2600       25.2600    
           2011-11         25.2800       25.2800  
           2011-12         25.3700       25.3700 

У меня также есть серия с теми же двумя настройками многоиндексности, и там работала следующая команда:

X.loc[:,'1988-06':'1998-07']

Если бы я хотел, чтобы все наблюдения между 1988-06 и 1998-07 гг. Для всех идентификаторов. Когда я пытаюсь использовать этот же подход для Dataframe, я получаю KeyError.

Можно ли сделать то же самое с Dataframe?

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Попробуйте это:

out_frame = df[(df['Date'] > '2010-09') & (df['Date'] < '2012-12')]
0 голосов
/ 16 мая 2019

Вы пытались получить к нему доступ только с одним значением «Дата»? Что-то вроде: X.loc[:,'1988-06']

Эта проблема также может помочь: Панды: разделить мультииндекс по диапазону вторичного индекса

...