在pandas数据框中通过多重索引进行选择(子集)

8 投票
1 回答
7406 浏览
提问于 2025-04-18 05:22

我在想有没有一种简单的方法,可以根据多重索引来选择或筛选一个Pandas数据框。我的数据看起来是这样的(id和日期是索引):

                        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(),但都没有成功。

谢谢你的帮助!

1 个回答

15

你可以这样使用 .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

想了解更多信息,可以查看 这里

撰写回答