- 标签切片,如’a’:‘c’,与序列切片如0:2不同,后者不包含index=2的元素,前者包含结束标签’c’所在的行。
- 布尔类型数组作为标签,例如[True, False]等价于[‘a’,‘c’]
1.loc
import numpy as np import pandas as pd from pandas import * from numpy import * data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz")) print(data) # w x y z #A 0 1 2 3 #B 4 5 6 7 #C 8 9 10 11 #D 12 13 14 15 #loc #行的选取 print(data.loc["A"]) print(type(data.loc["A"])) #w 0 #x 1 #y 2 #z 3 #Name: A, dtype: int32 #
print(data.loc[["A"]]) print(type(data.loc[["A"]])) # w x y z #A 0 1 2 3 #
#综上,[]返回Series,[[]]返回DataFrame print(data.loc["A","w"]) print(type(data.loc["A","w"])) #0 #
print(data.loc[:,"w"]) print(type(data.loc[:,"w"])) #A 0 #B 4 #C 8 #D 12 #Name: w, dtype: int32 #
print(data.loc["A":"C"]) print(type(data.loc["A":"C"])) # w x y z #A 0 1 2 3 #B 4 5 6 7 #C 8 9 10 11 #
print(data.loc["A":"C","w":"y"]) print(type(data.loc["A":"C","w":"y"])) # w x y #A 0 1 2 #B 4 5 6 #C 8 9 10 #
print(data.loc[["A","C"],["w","y"]]) print(type(data.loc[["A","C"],["w","y"]])) # w y #A 0 2 #C 8 10 #
print(data.loc[:,["w","y"]]) print(type(data.loc[:,["w","y"]])) # w y #A 0 2 #B 4 6 #C 8 10 #D 12 14 #
#列的选取 print(data["w"])#等同于print(data.loc[:,"w"]) #A 0 #B 4 #C 8 #D 12 #Name: w, dtype: int32 print(data.loc[:,"w"]) #A 0 #B 4 #C 8 #D 12 #Name: w, dtype: int32 print(data["w"].equals(data.loc[:,"w"]))#True #根据特殊条件选取行列 print(data["w"]>5) #A False #B False #C True #D True #Name: w, dtype: bool print(data.loc[data["w"]>5]) # w x y z #C 8 9 10 11 #D 12 13 14 15 print(data.loc[data["w"]>5,"w"]) print(type(data.loc[data["w"]>5,"w"])) #C 8 #D 12 #Name: w, dtype: int32 #
print(data.loc[data["w"]>5,["w"]]) print(type(data.loc[data["w"]>5,["w"]])) # w #C 8 #D 12 #
print(data["w"]==0) print(data.loc[lambda data:data["w"]==0]) print(type(data.loc[lambda data:data["w"]==0])) #A True #B False #C False #D False #Name: w, dtype: bool # w x y z #A 0 1 2 3 #
#loc赋值 print(data) # w x y z #A 0 1 2 3 #B 4 5 6 7 #C 8 9 10 11 #D 12 13 14 15 data.loc[["A","C"],["w","x"]]=999 print(data) # w x y z #A 999 999 2 3 #B 4 5 6 7 #C 999 999 10 11 #D 12 13 14 15
2.iloc
data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz")) print(data) # w x y z #A 0 1 2 3 #B 4 5 6 7 #C 8 9 10 11 #D 12 13 14 15 print(data.iloc[0]) print(type(data.iloc[0])) #w 0 #x 1 #y 2 #z 3 #Name: A, dtype: int32 #
#print(data.iloc["A"])报错 #print(data.loc[0])报错 print(data.loc[["A"]]) print(type(data.loc["A"])) # w x y z #A 0 1 2 3 #
3.iloc和loc差别
iloc是按照行数取值,而loc按着index名取值
data=DataFrame(np.arange(16).reshape(4,4),index=list("1234"),columns=list("wxyz")) print(data) # w x y z #1 0 1 2 3 #2 4 5 6 7 #3 8 9 10 11 #4 12 13 14 15 print(data.iloc[0]) #w 0 #x 1 #y 2 #z 3 #Name: 1, dtype: int32 #print(data.loc[0])报错
参考:https://blog.csdn.net/boywaiter/article/details/
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176556.html原文链接:https://javaforall.net
