多索引切片给我“ Keyerror”

时间:2019-05-16 12:41:44

标签: python select subset slice multi-index

我有一个索引为(ID,Date)的数据框,我想在特定时间范围内选择所有观测值(例如06-1988:11-1988)。如果不是在某个ID的时间范围内所有观察结果都存在,我仍然要包括存在 的那些结果。

可视化我的数据框以提供更好的主意:(面板不平衡)

                           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之间的所有ID的所有观测值。当我对数据框尝试相同的方法时,出现了KeyError。

是否可以对数据框执行相同操作?

2 个答案:

答案 0 :(得分:0)

您是否尝试仅使用一个“日期”值访问它?就像是: X.loc[:,'1988-06']

此问题也可能有帮助:pandas: slice a MultiIndex by range of secondary index

答案 1 :(得分:0)

尝试一下:

out_frame = df[(df['Date'] > '2010-09') & (df['Date'] < '2012-12')]