Series对象是由索引index和值values组成的,一个index对应一个value。其中index是pandas中的Index对象。values是numpy中的数组对象。

  1. import pandas as pd
  2. s1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd'])
  3. print(s1)

a 2
b 3
c 4
d 5
dtype: int64

  1. print(s1.index)

Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=’object’)

  1. print(s1.values)

[2 3 4 5]

如何对Series对象进行索引?

1:使用index中的值进行索引

  1. print(s1['a']) # 索引得到标签 a 对应的值 2
  2. print(s1[['a','d']]) # 多标签索引时置于一个列表中

a 2
d 5
dtype: int64
可以用切片方法获取 ,注意,切片索引保存最后一个值:

  1. print(s1['b':'d'])

b 3
c 4
d 5
dtype: int64

2:使用下标进行索引

  1. print(s1[0]) # 2
  2. print(s1[[0,3]]) # 索引序号为0和3
  3. print(s1[1:3]) # 索引序号从1到3(与用标签不同的是,用序号时不包括右边界3)

s1[[0,3]]
a 2
d 5
dtype: int64

s1[1:3]
b 3
c 4
dtype: int64

3:特殊情况:

上面的index为字符串,假如index为数字,这个时候进行索引是按照index值进行还是按照下标进行?
可以看出来,当index为整数的时候,那么前两种选择是使用index的值进行索引, 而后一种切片选择使用的是下标进行索引。

  1. s1 = pd.Series([2,3,4,5], index=[1,2,3,4])
  2. print(s1)
  3. # 1 2
  4. # 2 3
  5. # 3 4
  6. # 4 5
  7. # dtype: int64
  8. print(s1[2]) # 3 使用index的值进行索引
  9. # print(s1[0]) # KeyError: 0,使用index的值进行索引,0不存在
  10. print(s1[[2,4]]) # 使用index的值进行索引
  11. # 2 3
  12. # 4 5
  13. # dtype: int64
  14. print(s1[1:3]) # 切片时,使用下标进行索引,屏蔽了index的值
  15. # 2 3
  16. # 3 4
  17. # dtype: int64

4:使用布尔Series进行索引

使用布尔Series进行索引的时候,其实是要求布尔Series和我们的索引对象有相同的index。

  1. s1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd'])
  2. print(s1 > 3)
  3. # 结果(这是一个bool Series):
  4. # a False
  5. # b False
  6. # c True
  7. # d True
  8. # dtype: bool
  9. print(s1[s1 > 3])
  10. # 结果(只需要把bool Series 传入Series就可以实现索引):
  11. # c 4
  12. # d 5
  13. # dtype: int64

5:使用Index对象来进行索引

使用Index对象进行索引的时候,和使用值索引没有本质的区别。因为Index里面也存入了很多值,可以把Index看做一个list。

转载自三味书屋