我想知道是否有一种基于多索引选择或子集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
我想要这样的事情:
df.xs[10223).xs('2011-07-21':'2011-07-30')
但上面的代码并不适用于第二个xs()
。 xs()
只能选择一行,而不能选择数据帧的子集。我也试过了df.query()
和df.ix()
,但没有运气。
感谢您的帮助!
答案 0 :(得分:13)
您应该能够以下列方式使用.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
有关详细信息,请参阅here