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的情况类似这里不在赘述
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)
有什么问题还望能够及时指出,小白在这不胜感激