更新时间:2022-09-05 来源:黑马程序员 浏览量:
Series类对象属于一维结构,它只有行索引,而DataFrame类对象属于二维结构,它同时拥有行索引和列索引。由于它们的结构有所不同,所以它们的索引操作也会有所不同。接下来,先为大家介绍一下Series的索引操作。
Series有关索引的用法类似于NumPy数组的索引,只不过Series的索引值不只是整数。如果我们希望获取某个数据,既可以通过索引位置来获取,也可以使用索引名称来获取,示例代码如下。
In [25]: import pandas as pd ser_obj=pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e']) ser_obj[2] # 使用索引位置获取数据 Out[25]: 3 In [26]: ser_obj['c'] # 使用索引名称获取数据 Out[26]: 3
当然,Series也可以使用切片来获取数据。不过,如果使用的是位置索引进行切片,则切片结果和list切片类似,即包含起始位置但不包含结束位置;如果使用索引名称进行切片,则切片结果是包含结束位置的,示例代码如下:
In [27]: ser_obj[2: 4] # 使用位置索引经进行切片 Out[27]: c 3 d 4 dtype: int64 In [28]: ser_obj['c': 'e'] # 使用索引名称进行切片 Out[28]: c 3 d 4 e 5 dtype: int64
如果希望获取的是不连续的数据,则可以通过不连续索引来实现,具体示例代码如下:
In [29]: ser_obj[[0, 2, 4]] # 通过不连续位置索引获取数据集 Out[29]: a 1 c 3 e 5 dtype: int64 In [30]: ser_obj[['a', 'c', 'd']] # 通过不连续索引名称获取数据集 Out[30]: a 1 c 3 d 4 dtype: int64
布尔型索引同样适用于Pandas,具体的用法跟数组的用法一样,将布尔型的数组索引作为模板筛选数据,返回与模板中True位置对应的元素,具体代码如下:
In [31]: ser_bool=ser_obj>2 # 创建布尔型Series对象 ser_bool Out[31]: a False b False c True d True e True dtype: bool In [32]: ser_obj[ser_bool] #获取结果为True的数据 Out[32]: c 3 d 4 e 5 dtype: int64