【问题标题】:MultiIndex Slicing gives me 'Keyerror'MultiIndex Slicing 给了我“Keyerror”
【发布时间】:2019-05-16 12:41:43
【问题描述】:

我有一个带有索引(ID,日期)的数据框,我想在其中选择特定时间范围内的所有观察值(例如 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']

如果我想要所有 ID 在 1988-06 和 1998-07 之间的所有观察结果。当我对 Dataframe 尝试同样的方法时,我得到一个 KeyError。

是否可以对 Dataframe 做同样的事情?

【问题讨论】:

    标签: python select subset slice multi-index


    【解决方案1】:

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

    这个问题也有帮助:pandas: slice a MultiIndex by range of secondary index

    【讨论】:

    • 是的,我确实尝试过,它也给了我同样的错误。但是,当我执行以下操作时:X.loc[10113].loc['01-1997':'01-1998'],然后它确实给了我仅索引 10113 的正确输出。虽然这仅适用于 ['01-1997':'01-1998'] 内的所有日期都存在的 ID。
    • 您是否尝试过将元组作为索引传递?就像他们在这里做的一样 [stackoverflow.com/a/13389808/10716506]
    • 是的,我也试过了,但我认为它不适用于我想在日期之间使用的 ':'。
    • 是的,我目前正在尝试将它们转换为日期时间,也许可以解决问题
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 这部分 df['Date'] 不起作用,我认为它与多索引有关。我收到以下错误:KeyError: 'Date'
    • 打印出你的数据框结构或附加示例文件
    猜你喜欢
    • 2016-01-07
    • 2018-07-22
    • 1970-01-01
    • 2013-08-13
    • 2017-02-17
    • 2014-11-30
    • 2020-10-04
    • 2022-10-03
    • 1970-01-01
    相关资源
    最近更新 更多