Python中pandas的層級(jí)索引是什么-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元湘橋做網(wǎng)站,已為上家服務(wù),為湘橋各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

不懂Python中pandas的層級(jí)索引是什么?其實(shí)想解決這個(gè)問題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。

1、認(rèn)識(shí)層級(jí)索引

以下示例將創(chuàng)建一個(gè) Series 對(duì)象, 索引 Index 由兩個(gè)子 list 組成,第一個(gè)子 list 是外層索引,第二個(gè) list 是內(nèi)層索引:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0   -0.201536
   1   -0.629058
   2    0.766716
b  0   -1.255831
   1   -0.483727
   2   -0.018653
c  0    0.788787
   1    1.010097
   2   -0.187258
d  0    1.242363
   1   -0.822011
   2   -0.085682
dtype: float64

2、MultiIndex 索引對(duì)象

嘗試打印上面示例中 Series 的索引類型,會(huì)得到一個(gè) MultiIndex 對(duì)象,MultiIndex 對(duì)象的 levels 屬性表示兩個(gè)層級(jí)中分別有那些標(biāo)簽,codes 屬性表示每個(gè)位置分別是什么標(biāo)簽,如下所示:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0    0.035946
   1   -0.867215
   2   -0.053355
b  0   -0.986616
   1    0.026071
   2   -0.048394
c  0    0.251274
   1    0.217790
   2    1.137674
d  0   -1.245178
   1    1.234972
   2   -0.035624
dtype: float64
>>> 
>>> type(obj.index)
<class 'pandas.core.indexes.multi.MultiIndex'>
>>> 
>>> obj.index
MultiIndex([('a', 0),
            ('a', 1),
            ('a', 2),
            ('b', 0),
            ('b', 1),
            ('b', 2),
            ('c', 0),
            ('c', 1),
            ('c', 2),
            ('d', 0),
            ('d', 1),
            ('d', 2)],
           )
>>> obj.index.levels
FrozenList([['a', 'b', 'c', 'd'], [0, 1, 2]])
>>>
>>> obj.index.codes
FrozenList([[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])

通??梢允褂?from_arrays() 方法來將數(shù)組對(duì)象轉(zhuǎn)換為 MultiIndex 索引對(duì)象:

>>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']]
>>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color'))
MultiIndex([(1,  'red'),
            (1, 'blue'),
            (2,  'red'),
            (2, 'blue')],
           names=['number', 'color'])

其他常用方法見下圖:

Python中pandas的層級(jí)索引是什么

3、提取值

對(duì)于這種有多層索引的對(duì)象,如果只傳入一個(gè)參數(shù),則會(huì)對(duì)外層索引進(jìn)行提取,其中包含對(duì)應(yīng)所有的內(nèi)層索引,如果傳入兩個(gè)參數(shù),則第一個(gè)參數(shù)表示外層索引,第二個(gè)參數(shù)表示內(nèi)層索引,示例如下:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0    0.550202
   1    0.328784
   2    1.422690
b  0   -1.333477
   1   -0.933809
   2   -0.326541
c  0    0.663686
   1    0.943393
   2    0.273106
d  0    1.354037
   1   -2.312847
   2   -2.343777
dtype: float64
>>> 
>>> obj['b']
0   -1.333477
1   -0.933809
2   -0.326541
dtype: float64
>>>
>>> obj['b', 1]
-0.9338094811708413
>>> 
>>> obj[:, 2]
a    1.422690
b   -0.326541
c    0.273106
d   -2.343777
dtype: float64

4、交換分層與排序

MultiIndex 對(duì)象的 swaplevel() 方法可以交換外層與內(nèi)層索引,sortlevel() 方法會(huì)先對(duì)外層索引進(jìn)行排序,再對(duì)內(nèi)層索引進(jìn)行排序,默認(rèn)是升序,如果設(shè)置 ascending 參數(shù)為 False 則會(huì)降序排列,示例如下:

>>> import pandas as pd
>>> import numpy as np
>>> obj = pd.Series(np.random.randn(12),index=[['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
>>> obj
a  0   -0.110215
   1    0.193075
   2   -1.101706
b  0   -1.325743
   1    0.528418
   2   -0.127081
c  0   -0.733822
   1    1.665262
   2    0.127073
d  0    1.262022
   1   -1.170518
   2    0.966334
dtype: float64
>>> 
>>> obj.swaplevel()
0  a   -0.110215
1  a    0.193075
2  a   -1.101706
0  b   -1.325743
1  b    0.528418
2  b   -0.127081
0  c   -0.733822
1  c    1.665262
2  c    0.127073
0  d    1.262022
1  d   -1.170518
2  d    0.966334
dtype: float64
>>> 
>>> obj.swaplevel().index.sortlevel()
(MultiIndex([(0, 'a'),
            (0, 'b'),
            (0, 'c'),
            (0, 'd'),
            (1, 'a'),
            (1, 'b'),
            (1, 'c'),
            (1, 'd'),
            (2, 'a'),
            (2, 'b'),
            (2, 'c'),
            (2, 'd')],
           ), array([ 0,  3,  6,  9,  1,  4,  7, 10,  2,  5,  8, 11], dtype=int32))

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Python中pandas的層級(jí)索引是什么內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!

分享標(biāo)題:Python中pandas的層級(jí)索引是什么-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://bm7419.com/article2/hcgoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、關(guān)鍵詞優(yōu)化網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化