I was wondering if there is a clean way of selecting or subsetting a Pandas dataframe based on multi index. My data looks like this (id and date are index):
                        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 
I want something like this:
df.xs[10223).xs('2011-07-21':'2011-07-30')
but above code doesn't work for the second xs(). xs() can only select a single row, not a subset of dataframe. I also tried df.query() and df.ix(), but no luck. 
Thanks for your help!
You should be able to use .xs or .ix in the following way:
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
See here for more information
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With