溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么

發(fā)布時間:2022-05-11 15:22:20 來源:億速云 閱讀:342 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細介紹“Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

1.聯(lián)系

(1)操作對象相同:loc和iloc都是對DataFrame類型進行操作;

(2)完成目的相同:二者都是用于選取DataFrame中對應行或列中的元素。

2.區(qū)別

loc和iloc索引的行列標簽類型不同。

iloc使用順序數(shù)字來索引數(shù)據(jù),而不能使用字符型的標簽來索引數(shù)據(jù);注意:這里的順序數(shù)字是指從0開始計數(shù)!

loc使用實際設(shè)置的索引來索引數(shù)據(jù)。但行列名為數(shù)字時,loc也可以索引數(shù)字,但這里的數(shù)字不一定從0開始編號,是對應具體行列名的數(shù)字!

3.用法

下面用代碼來講解兩者的用法。

3.1行列全為從0開始順序編號

import pandas as pd
import numpy as np
 
a = np.arange(12).reshape(3,4)
#將a轉(zhuǎn)化為DataFrame類型
df = pd.DataFrame(a)
#展示df
df

Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么

由于未給df的行列命名,默認從0開始編號,所以這個時候使用loc和iloc結(jié)果是一樣的。

索引為一個數(shù),默認輸出行
print(df.loc[0])#輸出第0行元素
print(df.iloc[0])#輸出第0行元素

 兩者輸出結(jié)果都為:

0    0
1    1
2    2
3    3
Name: 0, dtype: int32

輸出結(jié)果為df第0行元素,結(jié)果中第一列表示列名,第二列表示具體的值。如果只需要輸出某一列,輸入df.loc[:,0]表示輸出第0列。

如果需要輸出第0到2列的數(shù)據(jù)。

#方式1
df.loc[:,0:2]#可把loc理解為遍歷字符串類型,0:2則表示標簽為0,1,2三列
#方式2
df.iloc[:,0:3]#iloc遍歷的數(shù)數(shù)字,python中0:3對應0,1,和2

輸出結(jié)果均為:

Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么

3.2有一行或列不是從0順序編號

#把行標簽換成其他數(shù)字編號
df.index=[2,5,7]
df.loc[2]

此時df變?yōu)椋?/p>

Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么

 輸出結(jié)果為:

0    0
1    1
2    2
3    3
Name: 2, dtype: int32

輸出結(jié)果對應的是列標簽為“2”所在的行。

我們繼續(xù)用df.iloc[2]輸出結(jié)果:

0     8
1     9
2    10
3    11
Name: 7, dtype: int32

可見輸出的是第2行的數(shù)據(jù)。

在這里我們能大概對loc和iloc的用法有了一定的了解。

3.3行或者列為非數(shù)字標簽

#把行標簽轉(zhuǎn)化為非數(shù)字類型
df.index=['a','b','c']
#輸出第a、b行,第0到2列的數(shù)據(jù)
#方式1
df.loc[['a','b'],0:2]#可把loc理解為遍歷字符串類型,0:2則表示標簽為0,1,2三列
#方式2
df.iloc[0:2,0:3]#iloc遍歷的是數(shù)字,0:2表示的是0和1,0:3表示0,1,2。

兩者輸出結(jié)果均為:

Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么

3.4 其他用法

一般情況下,表的行為從0編號的數(shù)字類型,列為具體的字符串類型。行的數(shù)字容易確定,列的列名容易確定。

#將行換成0 1 2編號
df.index=[0,1,2]
#列標簽換成A B C D
df.columns=['A','B','C','D']
df.iloc[1]['A']#實現(xiàn)輸出第1行第A列的數(shù)據(jù)

輸出結(jié)果為4。

如果要輸出第1行,第AB列,使用df.iloc[1][['A','B']],這里一定要注意'A','B'是作為一個列表輸入的,右側(cè)一共有兩個中括號。

輸出結(jié)果:

A    4
B    5
Name: 1, dtype: int32

df.iloc[1][['A','B']]等價于df.iloc[1,0:2],但是很多情況下我們不知道具體列名對應的數(shù)字,所以采用第一種方法可以提高編程效率。

讀到這里,這篇“Python中.iloc與.loc的區(qū)別、聯(lián)系和用法是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI