Pandas的loc,iloc与ix的用法及区别

 

1.先来谈一谈loc,loc这个方法就是你有啥我就用啥,你没有的我不用,pandas对象的index,columns有什么,pd.loc[index,column],index就是pd.index的其中的一个值或者是其中几个值组成的序列,或就是pd.index,column是pd.columns中的一个值或者其中几个值,或者就是pd.columns

来来上代码

 

 1 >>>data
 2    UserID  MovieID  Rating
 3 1       2      257       2
 4 0       3      251       2
 5 3       2       32       4
 6 2       4      256       1
 7 4       3      258       2
 8 >>>data.loc[0]
 9 UserID       3
10 MovieID    251
11 Rating       2
12 Name: 0, dtype: int64
13 >>>
14 >>>data
15    UserID  MovieID  Rating
16 a       2      257       2
17 b       3      251       2
18 c       2       32       4
19 d       4      256       1
20 e       3      258       2
21 >>>data.loc[0]  #对不起 你过不去,因为你没有0这个索引值
22 >>>data.loc['a']  #正确方式
23 UserID       2
24 MovieID    257
25 Rating       2
26 Name: a, dtype: int64
27 ######columns与index的情况类似这里不在赘述
Viewe

 

2.接下来我们再来谈一谈iloc这个方法,iloc正好与loc相反,iloc这个方法无论你pd对象有什么,我不稀罕,我只用我自己的这一套,pd.iloc[n1,n2],其中n1或者n2必须是数字,或者数字组成的序列(无论行或者列皆如此),但是这个数字必须在pd对象的行数或者列数的范围之内(不包括列数或者行数的最大值,因为从零开始)

废话不多说,直接上代码

>>>data
   UserID  MovieID  Rating
1       2      257       2
0       3      251       2
3       2       32       4
2       4      256       1
4       3      258       2
>>>data.iloc[0]
UserID       2
MovieID    257
Rating       2
Name: 1, dtype: int64
#注意到索引为0的位置是第二行行,而结果却显示的是第一行,这就是iloc不听话的地方

>>>data
   UserID  MovieID  Rating
a       2      257       2
b       3      251       2
c       2       32       4
d       4      256       1
e       3      258       2
>>>data.iloc['a']  #对不起,我不吃你这一套
>>>data.iloc[0]
UserID       2
MovieID    257
Rating       2
Name: 1, dtype: int64
#显然无论你的index或者columns的值是什么,都不影响我的iloc自己取值的规则

3.最后再来说一说ix,ix这个就是个和事老,当你有数字索引值时,用数字索引就与loc一样(其中一个为数字,index或者columns就都为数字,若其中有字符串他会将数字进行转换),当index或者columns是字符串是你用字符串进行索引时与loc一样,用数字进行索引时与iloc一样,这里需要注意的就是当索引为数字时的情况(ix只有在字符索引的情况下用数字索引才会与iloc保持一致,否则一直支持loc)由于情况与上面类似不代码不再写了(lazy)

有什么问题还望能够及时指出,小白在这不胜感激

 

posted @ 2018-07-27 19:05  夜尽天已明  阅读(1194)  评论(0编辑  收藏  举报