首页 > 技术文章 > loc和iloc的用法和区别

coco53 2021-12-12 15:37 原文

loc——通过行标签索引行数据
iloc——通过行号索引行数据
ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合)

标签切片,如’a’:‘c’,与序列切片如0:2不同,后者不包含index=2的元素,前者包含结束标签’c’所在的行。

布尔类型数组作为标签,例如[True, False]等价于[‘a’,‘c’]

 

  1 1.loc
  2 import numpy as np
  3 import pandas as pd
  4 from pandas import *
  5 from numpy import *
  6 
  7 data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz"))
  8 print(data)
  9 # w x y z
 10 #A 0 1 2 3
 11 #B 4 5 6 7
 12 #C 8 9 10 11
 13 #D 12 13 14 15
 14 
 15 #loc
 16 #行的选取
 17 print(data.loc["A"])
 18 print(type(data.loc["A"]))
 19 #w 0
 20 #x 1
 21 #y 2
 22 #z 3
 23 #Name: A, dtype: int32
 24 #<class 'pandas.core.series.Series'>
 25 
 26 print(data.loc[["A"]])
 27 print(type(data.loc[["A"]]))
 28 # w x y z
 29 #A 0 1 2 3
 30 #<class 'pandas.core.frame.DataFrame'>
 31 #综上,[]返回Series,[[]]返回DataFrame
 32 
 33 print(data.loc["A","w"])
 34 print(type(data.loc["A","w"]))
 35 #0
 36 #<class 'numpy.int32'>
 37 
 38 print(data.loc[:,"w"])
 39 print(type(data.loc[:,"w"]))
 40 #A 0
 41 #B 4
 42 #C 8
 43 #D 12
 44 #Name: w, dtype: int32
 45 #<class 'pandas.core.series.Series'>
 46 
 47 print(data.loc["A":"C"])
 48 print(type(data.loc["A":"C"]))
 49 # w x y z
 50 #A 0 1 2 3
 51 #B 4 5 6 7
 52 #C 8 9 10 11
 53 #<class 'pandas.core.frame.DataFrame'>
 54 
 55 print(data.loc["A":"C","w":"y"])
 56 print(type(data.loc["A":"C","w":"y"]))
 57 # w x y
 58 #A 0 1 2
 59 #B 4 5 6
 60 #C 8 9 10
 61 #<class 'pandas.core.frame.DataFrame'>
 62 
 63 print(data.loc[["A","C"],["w","y"]])
 64 print(type(data.loc[["A","C"],["w","y"]]))
 65 # w y
 66 #A 0 2
 67 #C 8 10
 68 #<class 'pandas.core.frame.DataFrame'>
 69 
 70 print(data.loc[:,["w","y"]])
 71 print(type(data.loc[:,["w","y"]]))
 72 # w y
 73 #A 0 2
 74 #B 4 6
 75 #C 8 10
 76 #D 12 14
 77 #<class 'pandas.core.frame.DataFrame'>
 78 
 79 #列的选取
 80 print(data["w"])#等同于print(data.loc[:,"w"])
 81 #A 0
 82 #B 4
 83 #C 8
 84 #D 12
 85 #Name: w, dtype: int32
 86 print(data.loc[:,"w"])
 87 #A 0
 88 #B 4
 89 #C 8
 90 #D 12
 91 #Name: w, dtype: int32
 92 print(data["w"].equals(data.loc[:,"w"]))#True
 93 
 94 #根据特殊条件选取行列
 95 print(data["w"]>5)
 96 #A False
 97 #B False
 98 #C True
 99 #D True
100 #Name: w, dtype: bool
101 
102 print(data.loc[data["w"]>5])
103 # w x y z
104 #C 8 9 10 11
105 #D 12 13 14 15
106 print(data.loc[data["w"]>5,"w"])
107 print(type(data.loc[data["w"]>5,"w"]))
108 #C 8
109 #D 12
110 #Name: w, dtype: int32
111 #<class 'pandas.core.series.Series'>
112 print(data.loc[data["w"]>5,["w"]])
113 print(type(data.loc[data["w"]>5,["w"]]))
114 # w
115 #C 8
116 #D 12
117 #<class 'pandas.core.frame.DataFrame'>
118 print(data["w"]==0)
119 print(data.loc[lambda data:data["w"]==0])
120 print(type(data.loc[lambda data:data["w"]==0]))
121 #A True
122 #B False
123 #C False
124 #D False
125 #Name: w, dtype: bool
126 # w x y z
127 #A 0 1 2 3
128 #<class 'pandas.core.frame.DataFrame'>
129 
130 #loc赋值
131 print(data)
132 # w x y z
133 #A 0 1 2 3
134 #B 4 5 6 7
135 #C 8 9 10 11
136 #D 12 13 14 15
137 data.loc[["A","C"],["w","x"]]=999
138 print(data)
139 # w x y z
140 #A 999 999 2 3
141 #B 4 5 6 7
142 #C 999 999 10 11
143 #D 12 13 14 15
144 
145 2.iloc
146 data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz"))
147 print(data)
148 # w x y z
149 #A 0 1 2 3
150 #B 4 5 6 7
151 #C 8 9 10 11
152 #D 12 13 14 15
153 
154 print(data.iloc[0])
155 print(type(data.iloc[0]))
156 #w 0
157 #x 1
158 #y 2
159 #z 3
160 #Name: A, dtype: int32
161 #<class 'pandas.core.series.Series'>
162 #print(data.iloc["A"])报错
163 
164 #print(data.loc[0])报错
165 print(data.loc[["A"]])
166 print(type(data.loc["A"]))
167 # w x y z
168 #A 0 1 2 3
169 #<class 'pandas.core.series.Series'>
170 3.iloc和loc差别
171 
172 iloc是按照行数取值,而loc按着index名取值
173 
174 data=DataFrame(np.arange(16).reshape(4,4),index=list("1234"),columns=list("wxyz"))
175 print(data)
176 # w x y z
177 #1 0 1 2 3
178 #2 4 5 6 7
179 #3 8 9 10 11
180 #4 12 13 14 15
181 print(data.iloc[0])
182 #w 0
183 #x 1
184 #y 2
185 #z 3
186 #Name: 1, dtype: int32
#print(data.loc[0])报错
 

 

https://blog.csdn.net/weixin_44056331/article/details/89388866

推荐阅读