首頁(yè)技術(shù)文章正文

Python培訓(xùn):Series的索引操作方式是怎樣的?

更新時(shí)間:2022-09-05 來(lái)源:黑馬程序員 瀏覽量:

  Series類對(duì)象屬于一維結(jié)構(gòu),它只有行索引,而DataFrame類對(duì)象屬于二維結(jié)構(gòu),它同時(shí)擁有行索引和列索引。由于它們的結(jié)構(gòu)有所不同,所以它們的索引操作也會(huì)有所不同。接下來(lái),先為大家介紹一下Series的索引操作。

  Series有關(guān)索引的用法類似于NumPy數(shù)組的索引,只不過(guò)Series的索引值不只是整數(shù)。如果我們希望獲取某個(gè)數(shù)據(jù),既可以通過(guò)索引位置來(lái)獲取,也可以使用索引名稱來(lái)獲取,示例代碼如下。

In [25]: import pandas as pd
         ser_obj=pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
         ser_obj[2]            #  使用索引位置獲取數(shù)據(jù)
Out[25]: 3
In [26]: ser_obj['c']          # 使用索引名稱獲取數(shù)據(jù)
Out[26]: 3

  當(dāng)然,Series也可以使用切片來(lái)獲取數(shù)據(jù)。不過(guò),如果使用的是位置索引進(jìn)行切片,則切片結(jié)果和list切片類似,即包含起始位置但不包含結(jié)束位置;如果使用索引名稱進(jìn)行切片,則切片結(jié)果是包含結(jié)束位置的,示例代碼如下:

In [27]: ser_obj[2: 4]             # 使用位置索引經(jīng)進(jìn)行切片
Out[27]:
         c    3
         d    4
         dtype: int64
In [28]: ser_obj['c': 'e']         # 使用索引名稱進(jìn)行切片
Out[28]:
         c    3
         d    4
         e    5
         dtype: int64

  如果希望獲取的是不連續(xù)的數(shù)據(jù),則可以通過(guò)不連續(xù)索引來(lái)實(shí)現(xiàn),具體示例代碼如下:

In [29]: ser_obj[[0, 2, 4]]             # 通過(guò)不連續(xù)位置索引獲取數(shù)據(jù)集
Out[29]:
         a    1
         c    3
         e    5
         dtype: int64
In [30]: ser_obj[['a', 'c', 'd']]         # 通過(guò)不連續(xù)索引名稱獲取數(shù)據(jù)集
Out[30]:
         a    1
         c    3
         d    4
         dtype: int64

  布爾型索引同樣適用于Pandas,具體的用法跟數(shù)組的用法一樣,將布爾型的數(shù)組索引作為模板篩選數(shù)據(jù),返回與模板中True位置對(duì)應(yīng)的元素,具體代碼如下:

In [31]: ser_bool=ser_obj>2               # 創(chuàng)建布爾型Series對(duì)象
         ser_bool
Out[31]: a    False
         b    False
         c    True
         d    True
         e    True
dtype: bool
In [32]: ser_obj[ser_bool]                #獲取結(jié)果為True的數(shù)據(jù)
Out[32]:
         c    3
         d    4
         e    5
         dtype: int64


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!