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