您的位置:首页 > 其它

Pandas中ix,loc,iloc有什么区别?

2017-01-10 23:34 681 查看
直接看例子:

>>> 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的标签上进行索引,范围包括start和end.

iloc 在index的位置上进行索引,不包括end.

ix 先在index的标签上索引,索引不到就在index的位置上索引(如果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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: