在pandas数据帧中通过多索引选择(子集化)

use*_*212 7 python subset dataframe pandas

我想知道是否有一种基于多索引选择或子集Pandas数据帧的简洁方法.我的数据看起来像这样(id和date是索引):

                        values                  
id     date
10113  2010-07-21      24.7000
       2010-07-22      25.2600  
       2010-07-23      25.2800  
       2010-07-26      25.3700 
       2010-07-27      25.2900 
10223  2011-07-21      24.7000
       2011-07-22      25.2600  
       2011-07-23      25.2800  
       2011-07-26      25.3700 
       2011-07-27      25.2900 
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

df.xs[10223).xs('2011-07-21':'2011-07-30')
Run Code Online (Sandbox Code Playgroud)

但上面的代码不适用于第二个xs().xs()只能选择一行,而不是数据帧的子集.我也试过df.query()df.ix(),但没有运气.

谢谢你的帮助!

Kar*_* D. 14

您应该能够使用.xs.ix以下列方式:

print df.ix[(10223,'2011-07-21'):(10223,'2011-07-30')]

                 values
id    date              
10223 2011-07-21   24.70
      2011-07-22   25.26
      2011-07-23   25.28
      2011-07-26   25.37
      2011-07-27   25.29

print df.xs(10223,level='id')

            values
date              
2011-07-21   24.70
2011-07-22   25.26
2011-07-23   25.28
2011-07-26   25.37
2011-07-27   25.29
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见此处