切片Multindex时间(第一级)TypeError:'int'和'slice'实例之间不支持'<'

时间:2019-02-16 22:23:01

标签: python pandas indexing slice

我有以下带有日期时间索引(“日期”)的Panda DataFrame df

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年2月以后的所有值,我知道我可以做:

df.loc['02-2019':]

现在让我们说我用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 :(得分:0)

切片与strings一起使用的事实确实很方便。如果失败,请返回使用datetime64进行切片,如果不存在则将其添加为1和2:

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