python中iloc和loc的用法

python中iloc和loc的用法

loc:标签索引iloc:位置索引

近期学习到了loc和iloc的切片用法,发现用法实在是很多,所以用一个简单的例子进行总结用法,期间也借鉴了大量笔记,如果有错误的地方,期待小伙伴们评论区指正。 pandas以类似字典的方式来获取某一列的值。 数据data.csv分布如下: 查看数据:

import pandas as pd

data = pd.read_csv('./data.csv',index_col=0,encoding='gb2312')

print(data)

print(data.shape)

index = data.index

col = data.columns

print(index)

print(col)

结果如下:

A B C D E F

a 1 2 3 4 5 6

b 7 8 9 10 11 12

c 13 14 15 16 17 18

d 19 20 21 22 23 24

e 25 26 27 28 29 30

f 31 32 33 34 35 36

g 37 38 39 40 41 42

h 43 44 45 46 47 48

(8, 6)

Index(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'], dtype='object')

Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')

可以看出index为列索引标签,columns为行索引标签,此时该矩阵为8*6的一个矩阵。

loc:标签索引

也就是采用行列标签来进行索引 为了便于理解,我们将loc和iloc举的例子一一对应,如果有不懂的小伙伴欢迎评论区互动。

当我们想获取第一行到第二行,第一列到第三列的数值时:

x = data.loc['a':'b','A':'C']

print(x)

结果如下:

A B C

a 1 2 3

b 7 8 9

当我们需要获取前两行所有列的数据时:

x = data.loc['a':'b',:]

print(x)

结果如下:

A B C D E F

a 1 2 3 4 5 6

b 7 8 9 10 11 12

当我们需要获取第二列到第三列所有行的数据时:

x = data.loc[:,'B':'C']

print(x)

结果如下:

B C

a 2 3

b 8 9

c 14 15

d 20 21

e 26 27

f 32 33

g 38 39

h 44 45

如果想要索引间隔的行和列: 例如获取第二行和第四行且位于第一列和第四列的数值

x=data.loc[['b','d'],['A','D']]

print(x)

结果如下:

A D

b 7 10

d 19 22

5.按照条件进行索引,例如获取A列中数值大于19,同时位于第三列和第五列的数值:

x=data.loc[data['A'] > 19, ['C', 'E']]

print(x)

结果如下:

C E

e 27 29

f 33 35

g 39 41

h 45 47

iloc:位置索引

当我们想获取第一行到第二行,第一列到第三列的数值时:

x = data.iloc[0:2,0:3]

print(x)

结果如下:

A B C

a 1 2 3

b 7 8 9

当我们需要获取前两行所有列的数据时:

x = data.iloc[0:2,:]

print(x)

结果如下:

A B C D E F

a 1 2 3 4 5 6

b 7 8 9 10 11 12

当我们需要获取第二列到第三列所有行的数据时:

x = data.iloc[:,1:3]

print(x)

结果如下:

B C

a 2 3

b 8 9

c 14 15

d 20 21

e 26 27

f 32 33

g 38 39

h 44 45

如果想要索引间隔的行和列: 例如获取第二行和第四行且位于第一列和第四列的数值

x=data.iloc[[1,3],[0,3]]

print(x)

结果如下:

A D

b 7 10

d 19 22

5.按照条件进行索引,例如获取A列中数值大于19,同时位于第三列和第五列的数值:

x=data.iloc[(data['A'] > 19).values, [2, 4]]

print(x)

结果如下:

C E

e 27 29

f 33 35

g 39 41

h 45 47

总结: 所以我们可以总结得到loc和iloc的用法,data.loc[想要索引的行标签,想要索引的列标签],data.iloc[想要索引的行,想要索引的列]