9

我已经开始将 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 回答 2

12

对于第一部分,您可以使用布尔索引get_level_values

df[df.index.get_level_values('a').isin([5, 7, 10, 13])]

对于后两个,您可以通过调用检查MultiIndex对象:

df.index

(这可以检查/切片。)

于 2012-12-21T16:53:53.567 回答
2

编辑:此答案仅适用于低于 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 的帮助下完成了一半)

于 2012-12-21T22:04:39.677 回答