我有一个带有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')
将产生我想要的结果。
答案 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']