Pandas中的ix,loc,iloc

例子:

>>> 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

猜你喜欢

转载自blog.csdn.net/qq_39355550/article/details/81805653
今日推荐