loc中的數(shù)據(jù)是列名舔清,是字符串,所以前后都要惹酢体谒;iloc中數(shù)據(jù)是int整型,所以是Python默認(rèn)的前閉后開(kāi)
一臼婆、loc函數(shù)
構(gòu)建數(shù)據(jù)集df
import pandas as pd
df = pd.DataFrame([
['green', 'M', 10.1, 'class1'],
['red', 'L', 13.5, 'class2'],
['blue', 'XL', 15.3, 'class1']])
print (df)
# 數(shù)據(jù)集為以下內(nèi)容抒痒,所有操作均對(duì)df進(jìn)行
0 1 2 3
0 green M 10.1 class1
1 red L 13.5 class2
2 blue XL 15.3 class1
loc函數(shù)主要通過(guò)行標(biāo)簽索引行數(shù)據(jù),劃重點(diǎn)颁褂,標(biāo)簽故响!標(biāo)簽!標(biāo)簽颁独!
loc[1] 選擇行標(biāo)簽是1的(從0彩届、1、2誓酒、3這幾個(gè)行標(biāo)簽中)
In[1]: df.loc[1]
Out[1]:
0 red
1 L
2 13.5
3 class2
loc[0:1] 和 loc[0,1]的區(qū)別樟蠕,其實(shí)最重要的是loc[0:1]和iloc[0:1]
In[10]: df.loc[0:1] #取第一和第二行贮聂,loc[]中的數(shù)字其實(shí)是行索引,所以算是前閉加后閉
Out[10]:
0 1 2 3
0 green M 10.1 class1
1 red L 13.5 class2
In[12]: df.iloc[0:1]
Out[12]:
0 1 2 3
0 green M 10.1 class1
In[11]: df.loc[0,1]
Out[11]: 'M'
索引某一列數(shù)據(jù)寨辩,loc[:,0:1]吓懈,還是標(biāo)簽,注意靡狞,如果列標(biāo)簽是個(gè)字符耻警,比如'a',loc['a']是不行的甸怕,必須為loc[:甘穿,'a']。
但如果行標(biāo)簽是'a',選取這一行梢杭,用loc['a']是可以的扒磁。
n[13]: df.loc[:,0:1]
Out[13]:
0 1
0 green M
1 red L
2 blue XL
二、iloc函數(shù)
iloc 主要是通過(guò)行號(hào)獲取行數(shù)據(jù)式曲,劃重點(diǎn)妨托,序號(hào)!序號(hào)吝羞!序號(hào)兰伤!
iloc[0:1],由于Python默認(rèn)是前閉后開(kāi)钧排,所以敦腔,這個(gè)選擇的只有第一行!
In[12]: df.iloc[0:1]
Out[12]:
0 1 2 3
0 green M 10.1 class1
如果想用標(biāo)簽索引恨溜,如iloc['a']符衔,就會(huì)報(bào)錯(cuò),它只支持int型糟袁。
三判族、ix函數(shù)
ix——結(jié)合前兩種的混合索引,即可以是行序號(hào)项戴,也可以是行標(biāo)簽形帮。
另,一些篩選操作
如選擇prize>10(prize為一個(gè)標(biāo)簽)的周叮,即 df.loc[df.prize>10]
還有&并或等操作
參考文獻(xiàn):
python選取特定列——pandas的iloc和loc以及icol使用
pandas入門(mén)——loc與iloc函數(shù)