Slicing Multindex Time (первый уровень) TypeError: «<» не поддерживается между экземплярами «int» и «slice» - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть следующий Panda DataFrame df с индексом datetime ('Date')

df=
                   CP  Amount Location   
Date                                                              
2019-02-13        Bob    -5.0  Chicago  
2019-02-13        Bob    -5.0  Chicago  
2019-02-13     Marina   -25.0      LA  
2019-02-13        Bob   -25.0      LA  
2019-02-14    Addison     5.0  Chicago  
2019-02-14    Addison     5.0  Chicago  

Если я хочу найти все значения для февраля 2019 года, я знаю, что могу сделать:

df.loc['02-2019':]

Теперь давайте предположим, что я делаю свой df MultiIndex (как поворот, так и аггезирование) с index = ['Date', 'Location', 'CP']

df=
                               Amount  
Date       Location CP                                                     
2019-02-13 Chicago  Bob         -10.0            
           LA       Marina      -25.0       
                    Bob         -25.0              
2019-02-14 Chicago  Addison     -10.0       

Когда я пытаюсь сделатьтот же df.loc ['02 -2019 ':]

Я получаю следующую ошибку

TypeError: '<' not supported between instances of 'int' and 'slice'

Я знаю, что могу просто сделать

df.loc['02-13-2019':]

и достичьте же результаты - но есть ли способ сделать временной интервал на месяц / год похожим на один индекс?Такие как

df.loc['2019':]

или

df.loc['02-2019':]

1 Ответ

0 голосов
/ 17 февраля 2019

Тот факт, что нарезка работает с strings, действительно удобен.Когда это не удается, вернитесь к использованию datetime64 для нарезки, который добавляет 1 в качестве дня и месяца, когда его нет:

import pandas as pd

s = '2019'
df.loc[pd.to_datetime(s):]

#                             Amount
#Date       Location CP             
#2019-02-13 Chicago  Bob       -10.0
#           LA       Bob       -25.0
#                    Marina    -25.0
#2019-02-14 Chicago  Addison   -10.0

s = '02-2019'
df.loc[pd.to_datetime(s):]

#                             Amount
#Date       Location CP             
#2019-02-13 Chicago  Bob       -10.0
#           LA       Bob       -25.0
#                    Marina    -25.0
#2019-02-14 Chicago  Addison   -10.0
...