更新時(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é)果為T(mén)rue的數(shù)據(jù) Out[32]: c 3 d 4 e 5 dtype: int64