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):
我想知道是否有一种基于多索引选择或子集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
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.
但上面的代码不适用于第二个xs()。 xs()只能选择一行,而不能选择数据帧的子集。我也试过df.query()和df.ix(),但没有运气。
Thanks for your help!
谢谢你的帮助!
1 个解决方案
#1
12
You should be able to use .xs
or .ix
in the following way:
您应该能够以下列方式使用.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
See here for more information
浏览此处获取更多信息
#1
12
You should be able to use .xs
or .ix
in the following way:
您应该能够以下列方式使用.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
See here for more information
浏览此处获取更多信息