例子:
>>> data = pd.Series(np.arange(10), index=[49,48,47,46,45, 1, 2, 3, 4, 5])
>>> data
49 0
48 1
47 2
46 3
45 4
1 5
2 6
3 7
4 8
5 9
dtype: int64
>>> data.iloc[:3]
49 0
48 1
47 2
dtype: int64
>>> data.loc[:3]
49 0
48 1
47 2
46 3
45 4
1 5
2 6
3 7
dtype: int64
>>> data.ix[:3]
49 0
48 1
47 2
46 3
45 4
1 5
2 6
3 7
dtype: int64
解析:
loc 在index的标签上进行索引,不定义的时候默认索引标签为0,1,2,3,范围包括start和end。
iloc 在index的位置上进行索引,不包括end,这也是我最常用的。
>>> data.iloc[:6]
49 0
48 1
47 2
46 3
45 4
1 5
dtype: int64
>>> data.loc[:6]
KeyError: 6
>>> data.ix[:6] #因为index里面不包含标签6,index都是整数
KeyError: 6
>>> data= pd.Series(np.arange(10), index=['a','b','c','d','e', 1, 2, 3, 4, 5])
>>> data
a 0
b 1
c 2
d 3
e 4
1 5
2 6
3 7
4 8
5 9
dtype: int64
>>> data.ix[:6]
a 0
b 1
c 2
d 3
e 4
1 5
dtype: int64
>>> data.loc[:6]
TypeError: cannot do slice indexing
建议: 为了避免歧义,建议优先选择loc和iloc