我对它们的区分,说loc(location),在教室里找不认识的同学的位置一样的,找人肯定要知道名字或者身高形体(条件),所以loc就只能用条件或者行列的名字来进行筛选;
再说iloc(indx location),index是什么,我把它当作是索引位置,第几行第几列的意思,所以iloc是用第几行第几列这样的数字来筛选的。
或许我形容的不够好,我下面的演示自己做一遍,会有深刻的印象。
import pandas as pd import numpy as np data = pd.DataFrame(np.random.randint(100,size=(10,10)),\ columns=['a','b','c','d','e','f','g','h','i','j'],\ index=['A','B','C','D','E','F','G','H','I','J']) data

以下方法中都可以采用切片的,十分方便,我演示的不多,还有待大家自行举一反三练习呀。
小声哔哔,有人问切片是啥,emm,这是还没入门啊,先学完切片再来看。
一、loc
loc[行索引名称或条件,列索引名称或者标签]
(一)读取某行
# 读取第二行的所有列 data.loc['B',:] # 等价于data.loc['B']

(二)读取某列
# 读取第一列的所有行 data.loc[:,'a']

(三)读取某行的同时读取某列
# 读取第一列第一行 data.loc['A','a']

loc支持切片这种骚操作.
# 读取第一行到第四行的第三列到第五列 data.loc['A':'D','c':'e']

(四)按照条件读取
data.loc[data.a > 50] # 等于data[data.a > 50]

不过这里还可以对列进行选择,切片也是行的
data.loc[data.a > 50, ['b','a']]

另外、错误示范
二、iloc
iloc[行索引位置,列索引位置]
以下尽量和loc读取一样的行或列,方便大家比较。
(一)读取某行
# 读取第一行的所有列 data.iloc[1] # 结果等价于data.loc['B',:] == data.iloc[1,:]

(二)读取某列
# 读取第一列的所有行 data.iloc[:,1]

(三)读取某行的同时读取某列
# 读取第一行第一列,python的位置都是从0开始的,第一行的表示就是0 data.iloc[0,0] # 结果等价于 data.loc['A','a']

同样的,无论是loc还是iloc它里面的参数都是可以进行切片操作的。
注意,这里的数字切片和上面的索引切片不一样,它的区间是左闭右开的,右边最后一个取不到
# 读取第一行到第四行的第二列到第五列 data.iloc[0:4,2:5] # 结果等价于data.loc['A':'D','c':'e']

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176770.html原文链接:https://javaforall.net
