熊猫沿着多指数和单独的指数切片

时间:2012-12-21 16:15:15

标签: python pandas

我已经开始将Pandas用于一些大型数据集,而且大多数情况下效果非常好。虽然我有一些关于指数的问题

  1. 我有一个有三个级别的MultiIndex - 让我们说a,b,c。如何切割索引a - 我只想要a = 5,7,10,13的值。执行df.ix [[5,7,10,13]]不能像文档中指出的那样工作

  2. 我需要在DF上有不同的索引 - 我可以创建这些多个索引而不将它们与数据帧关联起来并使用它们来回馈原始的ndarray索引吗?

  3. 我可以单独切片MultiIndex而不是系列或Dataframe吗?

  4. 提前致谢

2 个答案:

答案 0 :(得分:11)

对于第一部分,您可以使用get_level_values

来使用布尔索引
df[df.index.get_level_values('a').isin([5, 7, 10, 13])]

对于后两个,您可以通过调用:

来检查MultiIndex对象
df.index

(可以检查/切片。)

答案 1 :(得分:2)

编辑:此答案仅适用于pandas版本低于0.10.0:

好的@hayden有正确的想法:

索引具有方法get_level_values(),但它返回一个数组(在pandas版本中< 0.10.0)。数组不存在isin()方法,但这有效:

from pandas import lib
lib.ismember(df.index.get_level_values('a'), set([5, 7, 10, 13])

那只能回答问题1 - 但是如果我破解2,3,我会给出更新(用@ hayden的帮助完成一半)