获取MultiIndex Series的整数行索引

时间:2014-09-18 20:03:52

标签: python pandas series

我有一个带有MultiIndex的pandas系列,我想得到属于MultiIndex一个级别的整数行号。

例如,如果我有样本数据s

s = pandas.Series([10, 23, 2, 19], 
                  index=pandas.MultiIndex.from_product([['a', 'b'], ['c', 'd']]))

看起来像这样:

a c    10
  d    23
b c    2
  d    19

我想获得与级别b对应的行号。所以在这里,我得到[2, 3]作为输出,因为最后两行在b之下。另外,我真的只需要b下的第一行。

我想得到这些数字,以便我可以在整个系列中进行比较。假设我有五个具有b级别的Series对象。这些是时间序列数据,b对应于某些观察期间出现的条件(c是子条件等)。我想看看哪个系列同时存在条件。

编辑:为了澄清,我不需要比较价值本身,只需要比较指数。例如,在R中,如果我有这个数据帧:

d = data.frame(col_1 = c('a','a','b','b'), col_2 = c('c','d','c','d'), col_3 = runif(4))

然后命令which(d$col_1 == 'b')将产生我想要的结果。

1 个答案:

答案 0 :(得分:0)

如果要索引的索引是最外层的索引,则可以使用loc

df.loc['b']

要获得第一行,我发现head方法最简单

df.loc['b'].head(1)

执行问题第二部分的惯用方法如下。假设你的系列被命名为series1,series2和series3。

big_series = pd.concat([series1, series2, series3])
big_series.loc['b']