8

我有一个由元组索引的熊猫系列,如下所示:

from pandas import Series
s = Series({(0, 0): 1, (0, 1): 2, (0, 3): 3, (1, 0): 1, (1, 2): 4, (3, 0): 5})

我想通过使用也是元组的索引(使用字典顺序)来分割这样的系列,但不一定在索引中。当我传递系列中的索引时,切片似乎起作用:

s[:(1,0)]
(0, 0)    1
(0, 1)    2
(0, 3)    3
(1, 0)    1
dtype: int64

但是如果我尝试按不在系列中的索引切片,则会出现错误:

s[:(1,1)]
...
ValueError: Index(...) must be called with a collection of some kind, 0 was passed

理想情况下,我希望获得由 (0, 0)、(0, 1)、(0, 3)、(1, 0) 索引的系列元素,类似于在 TimeSeries 中使用日期切片时发生的情况。有没有一种简单的方法可以实现这一目标?

4

1 回答 1

8

如果您有 MultiIndex 而不是元组索引,则此方法有效:

In [11]: s.index = pd.MultiIndex.from_tuples(s.index)

In [12]: s
Out[12]: 
0  0    1
   1    2
   3    3
1  0    1
   2    4
3  0    5
dtype: int64

In [13]: s[:(1,1)]
Out[13]: 
0  0    1
   1    2
   3    3
1  0    1
dtype: int64

在以前的编辑中,我曾建议这可能是一个错误,并创造了一个可怕的黑客......

于 2013-08-02T11:14:58.747 回答