tft每日頭條

 > 生活

 > pandas根據索引名得到索引号

pandas根據索引名得到索引号

生活 更新时间:2024-07-18 18:26:17

來源:AI入門學習

作者:小伍哥

pandas根據索引名得到索引号(一網打盡Pandas中的各種索引)1

一、索引的概述

很多人在使用Pandas選取數據時,總會迷失在data[]、iloc()、loc()、ix()、at()、iat()中,似乎記得,又似乎不記得,每到用時都需要百度,不知所以然的解決了問題,下次繼續百度,記憶點基本上非常混亂。本文就是希望能解決這個問題,通過一個簡單的DataFrame徹底搞明白這三個函數到底有什麼區别,又該怎麼使用,希望對你有用。

日常使用中,推薦使用loc和iloc進行索引,loc是指location的意思,iloc中的 i 是指integer,這兩個方法容易混淆,可以使用特殊方式來加強記憶。

iloc:基于位置,用行号、列号進行索引,i 可以看着 int,因此 iloc 隻能用整數來索引,例如data.iloc[0:2,:]

loc :基于标簽,用行名、列名進行索引,數據的index經常為整數,因此 loc 的使用範圍要遠高于iloc,loc可以使用整數切片、名稱(index,columns)索引、也可以切片和名稱混合使用。例如:data.loc[0:5:,'row1':'row2']

我們簡單構造一個數據集,在下面的案例中需要用到。

import pandas as pd import numpy as np data = pd.DataFrame(np.arange(25).reshape(5, 5), index = ['row1', 'row2','row3','row4','row5'], columns=['col1', 'col2','col3','col4', 'col5']) data col1 col2 col3 col4 col5 row1 0 1 2 3 4 row2 5 6 7 8 9 row3 10 11 12 13 14 row4 15 16 17 18 19 row5 20 21 22 23 24

pandas根據索引名得到索引号(一網打盡Pandas中的各種索引)2

二、用列名直接索引 (不推薦)

取一列:data['col1'] 即取得第一列,得到的是一個Series對象。

取多列:data[['col1','col2']]

注 意:

用data['row1'] 、data[0]、data[:,0]、data[0,:]、data[:,'col1':'col2'] 統統都會報錯的,這類命令隻能用來按列名取一列或多列。

data['col1'] row1 0 row2 5 row3 10 row4 15 row5 20 Name: col1, dtype: int32 data[['col1','col2']] col1 col2 row1 0 1 row2 5 6 row3 10 11 row4 15 16 row5 20 21 #下面的命令直接應用都會報錯,但是用loc 和 iloc 就不會報錯 data['row1'] data[0] data[:,0] data[0,:] data[:,'col1':'col2'] #TypeError: '(slice(None, None, None), 0)' is an invalid key

三、用行号直接索引(不推薦)

data[0:2]代表取得第0行和第1行

注 意:

隻取一行的話,要用data[0:1],不能用data[0]。data[0:2,]也會報錯

data[0:2] col1 col2 col3 col4 col5 row1 0 1 2 3 4 row2 5 6 7 8 9

四、iloc按行号、列号來索引(推薦)

1)取一行 :data.iloc[0] 、data.iloc[0,:]

2)取多行 :data.iloc[[0,2]] 、data.iloc[[0,2],:]

3)取連續多行 :data.iloc[0:2] 、data.iloc[0:2,:]

4)取一列 : data.iloc[:,0]

5)取多列 :data.iloc[:,[0,2]]、data.iloc[:,[0,2]]

6)取連續多列 :data.iloc[:,0:2]

注 意:

取行的時候可以不提列,也可以用",:"來指全列

取列的時候必須用":,"來指定全行。

可以使用一個數字來代表一個,可以使用一個列表[a,b]代表多個,也可以使用a:b代表連續多個。

data.iloc[0]col1 0col2 1col3 2col4 3col5 4data.iloc[:,2:4] col3 col4row1 2 3row2 7 8row3 12 13row4 17 18row5 22 23

五、loc按行名、列名來索引(推薦)

1)取一行:data.loc['row1'] 、data.loc['row1',:]

2)取多行:data.loc[['row1','row2']] 、data.loc[['row1','row2'],:]

3)取連續多行:data.loc['row1':'row2'] 、data.loc['row1':'row2',:]

4)取一列:data.loc[:,'col1']

5)取多列:data.loc[:,['row1','row2']]

6)取連續多列:data.loc[:,'row1':'row2']

注 意:

取行的時候可以不提列,也可以用",:"來指全列。

取列的時候必須用":,"來指定全行。

可以使用一個數字來代表一個,可以使用一個list ['a','b']代表多個,也可以使用'a':'b'代表連續多個。

data.loc[:,'col1':'col3'] col1 col2 col3 row1 0 1 2 row2 5 6 7 row3 10 11 12 row4 15 16 17 row5 20 21 22 #當索引為整數時,可以用整數進行索引 data = pd.DataFrame(np.arange(25).reshape(5, 5), columns=['col1', 'col2','col3','col4', 'col5']) col1 col2 col3 col4 col5 0 0 1 2 3 4 1 5 6 7 8 9 2 10 11 12 13 14 3 15 16 17 18 19 4 20 21 22 23 24 data.loc[0:3,'col1':'col3'] col1 col2 col3 0 0 1 2 1 5 6 7 2 10 11 12 3 15 16 17

六、使用iat和at(不推薦)

iat 和 at 隻能取單個元素,iat 使用行、列索引,at 使用行、列名,但是其功能被 iloc 和 loc 包含,因此不推薦。

data.iat[1,2] 7

七、使用ix(不推薦)

ix 相當于 loc 和 iloc 的綜合版本,既可以按标簽選取,又可以按位置選取,也就是說,ix可以識别你是想按照标簽選取,還是按照位置選取。

關于ix,它是先于 iloc 和 loc 産生的,現在基本上用 iloc 和 loc 已經完全能取代 ix ,所以 ix 已經被官方棄用了。就不贅述了。

最後總結:(重點!!!!)

正常情況下,推薦使用 iloc 和 loc。最核心的點記住,取行可以不提列,取列必須提行,可以用一個數字,一個list,或者一個區間來取行列。

pandas根據索引名得到索引号(一網打盡Pandas中的各種索引)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved