iloc loc 区别
loc和iloc的區別,這兩個有點容易混淆,因此需要特殊方式來加強記憶
總結:
-
loc使用范圍比iloc更廣更實用,loc可以使用切片、名稱(index,columns)、也可以切片和名稱混合使用;但是loc不能使用不存在的索引來充當切片取值,像-1
-
iloc只能用整數來取數
-
不借助loc和iloc
data=DataFrame(np.arange(16).reshape(4,4),index=list(“ABCD”),columns=list(“wxyz”))
print(data)
#可以直接取列索引,行索引卻不行
aa=data[“w”]
bb=data[1:2] #行數值切片
cc=data[1:2,1:2] #不能同時切片,也就是中間不能有逗號
推薦使用loc
iloc: i可以看著int,因此iloc就是用數字(int)來取數據的.
iloc使用情況: 使用整數通過切片等方式取數
比如:
# 切片
# 下面兩種方法有同樣的效果; 表示取出df中1:5行(不包括5)和3:6列
1 df.iloc[1:5,3:6]
2 df.iloc[[1,2,3,4],[3,4,5]]
# 另外 df.iloc[0]、df.iloc[1]、df.iloc[-1] 分別表示第一行、第二行、最后一行
# 同理df.iloc[:,0]、df.iloc[:,1]、df.iloc[:,-1] 分別表示第一列、第二列、最后一列
loc的使用范圍要遠高于iloc, loc也能夠做到iloc的切片取數, 除了df.loc[-1]
loc使用情況:
使用切片、索引、列名稱查找
按條件(bool)查找
比如:
pandas中iloc、loc的用法和區別
時間:2020-03-17
本文章向大家介紹pandas中iloc、loc的用法和區別,主要包括pandas中iloc、loc的用法和區別使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。loc和iloc的區別,這兩個有點容易混淆,因此需要特殊方式來加強記憶總結:1. loc使用范圍比iloc更廣更實用,loc可以使用切片、名稱(index,columns)、也可以切片和名稱混合使用;但是loc不能使用不存在的索引來充當切片取值,像-12. iloc只能用整數來取數推薦使用lociloc: i可以看著int,因此iloc就是用數字(int)來取數據的.
iloc使用情況: 使用整數通過切片等方式取數
比如:# 切片
# 下面兩種方法有同樣的效果; 表示取出df中1:5行(不包括5)和3:6列
1 df.iloc[1:5,3:6]
2 df.iloc[[1,2,3,4],[3,4,5]]
# 另外 df.iloc[0]、df.iloc[1]、df.iloc[-1] 分別表示第一行、第二行、最后一行
# 同理df.iloc[:,0]、df.iloc[:,1]、df.iloc[:,-1] 分別表示第一列、第二列、最后一列loc的使用范圍要遠高于iloc, loc也能夠做到iloc的切片取數, 除了df.loc[-1]
loc使用情況:
使用切片、索引、列名稱查找
按條件(bool)查找比如:1 # 切片
2 hy_data.loc[2:4,]
3 hy_data.loc[[0,1,2,3],:]
4 # 切片和名稱混合
5 hy_data.loc[2:4,'用戶編號']
6 # 按條件取數
7 # 表示取出df中“行業分類”列值的長度等于6的所有行
8 hy_data.loc[hy_data['行業分類'].str.len() == 6, :]
loc——通過行標簽索引行數據
iloc——通過行號索引行數據
ix——通過行標簽或者行號索引行數據(基于loc和iloc 的混合)
標簽切片,如’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
#<class 'pandas.core.series.Series'>print(data.loc[["A"]])
print(type(data.loc[["A"]]))
# w x y z
#A 0 1 2 3
#<class 'pandas.core.frame.DataFrame'>
#綜上,[]返回Series,[[]]返回DataFrameprint(data.loc["A","w"])
print(type(data.loc["A","w"]))
#0
#<class 'numpy.int32'>print(data.loc[:,"w"])
print(type(data.loc[:,"w"]))
#A 0
#B 4
#C 8
#D 12
#Name: w, dtype: int32
#<class 'pandas.core.series.Series'>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
#<class 'pandas.core.frame.DataFrame'>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
#<class 'pandas.core.frame.DataFrame'>print(data.loc[["A","C"],["w","y"]])
print(type(data.loc[["A","C"],["w","y"]]))
# w y
#A 0 2
#C 8 10
#<class 'pandas.core.frame.DataFrame'>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
#<class 'pandas.core.frame.DataFrame'>#列的選取
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: boolprint(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
#<class 'pandas.core.series.Series'>
print(data.loc[data["w"]>5,["w"]])
print(type(data.loc[data["w"]>5,["w"]]))
# w
#C 8
#D 12
#<class 'pandas.core.frame.DataFrame'>
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
#<class 'pandas.core.frame.DataFrame'>#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 15print(data.iloc[0])
print(type(data.iloc[0]))
#w 0
#x 1
#y 2
#z 3
#Name: A, dtype: int32
#<class 'pandas.core.series.Series'>
#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
#<class 'pandas.core.series.Series'>
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])報錯
總結
以上是生活随笔為你收集整理的iloc loc 区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pandas dataframe 字符映
- 下一篇: pandas以前笔记