how to make indexer expression to slice a Multiindex and select values in python when the choosen indexers are continous integers?

how to make indexer expression to slice a Multilndex and slect values in python when the choosen indexers are continous integers?

我在 python 中使用 MuiliIndexed 数据帧来处理一些带有时间信息的测量数据。

我用'h'作为一级索引的名称,表示数据出现的小时,'min'作为二级索引的名称,表示分钟。当我想获取 10:03 到 10:15 期间或更长持续时间期间的数据平均值时,我找不到合适的表示来切片数据。代码总是出现 SyntaxError: invalid syntax.

数据框如下,命名为'means':

               L = 0.96m    L = 1.46m
h   min     
10  3   -0.116562   -0.110844
        4   -0.113849   -0.134462
        5   -0.140548   -0.132054
        6   -0.139505   -0.134903
        7   -0.124237   -0.116645
        8   -0.119559   -0.120527
        9   -0.136731   -0.159849
        10  -0.124228   -0.118011
        11  -0.137301   -0.124688
        12  -0.166075   -0.137226
        13  -0.124688   -0.126409
        14  -0.129269   -0.126247
        15  -0.104269   -0.126129
        16  -0.132237   -0.135247
        17  -0.124815   -0.148978
        18  -0.110742   -0.116591
        19  -0.124419   -0.124731
        20  -0.117151   -0.135806
        21  -0.135688   -0.124796
        22  -0.130656   -0.121968
        23  -0.142452   -0.141645
        24  -0.112304   -0.121370
        25  -0.115796   -0.134624
        26  -0.126860   -0.122817
        27  -0.120161   -0.115043
        28  -0.117656   -0.107355
        29  -0.127645   -0.138753
        30  -0.135054   -0.120380
        31  -0.142022   -0.110409
        32  -0.132978   -0.115677
        ...

我现在使用的代码是:

means.loc(axis=0)[10,[3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15]]

有效。

                L = 0.96m   L = 1.46m
h   min     
10  3   -0.116562   -0.110844
        4   -0.113849   -0.134462
        5   -0.140548   -0.132054
        6   -0.139505   -0.134903
        7   -0.124237   -0.116645
        8   -0.119559   -0.120527
        9   -0.136731   -0.159849
        10  -0.124228   -0.118011
        11  -0.137301   -0.124688
        12  -0.166075   -0.137226
        13  -0.124688   -0.126409
        14  -0.129269   -0.126247
        15  -0.104269   -0.126129

但是当我为了方便使用下面的代码时:

means.loc(axis=0)[10,[3:14]]

它以 syntaxerror:invalid 语法出现。 那么有没有另一种方便的方法,可以在 pandas 中截取一系列值,而不是列出所有需要的索引器?在从 10:03 到 10:59 的持续时间内获取值的情况下,我很难在 'min' 级别列出所有需要的索引器。

要修复您的直接错误,请尝试:

means.loc(axis=0)[10, slice(3, 14)]

在更一般的层面上,使用 single-level DatetimeIndex 而不是 MultiIndex 可能更容易,因为这将允许您使用 pandas' 日期时间索引和切片功能。