正如Robbie-Clarken回答的那样,从0.14开始,您可以在传递给loc的元组中传递一个切片:
In [11]: s.loc[('b', slice(2, 10))]Out[11]:b 2 -0.65394 4 0.08227dtype: float64实际上,您可以为每个级别传递一个切片:
In [12]: s.loc[(slice('a', 'b'), slice(2, 10))]Out[12]:a 5 0.27919b 2 -0.65394 4 0.08227dtype: float64注意:切片包含在内。
旧答案:
您还可以使用以下方法执行此操作:
s.ix[1:10, "b"]
(由于此版本允许赋值,因此最好在单个ix / loc / iloc中执行此操作。)
该答案是在2013年初推出iloc之前写的,即位置/整数位置-
在这种情况下可能更喜欢。创建它的原因是为了消除整数索引的熊猫对象的歧义,并且更具描述性:“我在位置上切片”。
s["b"].iloc[1:10]
也就是说,我有点不同意ix的文档:
最健壮和一致的方式
不是,最一致的方法是描述您在做什么:
- 使用loc作为标签
- 使用iloc定位
- 两者都使用ix(如果确实需要)
记住python的禅宗:
显式胜于隐式



