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