Series对象是由索引index和值values组成的,一个index对应一个value。其中index是pandas中的Index对象。values是numpy中的数组对象。
import pandas as pds1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd'])print(s1)
a 2
b 3
c 4
d 5
dtype: int64
print(s1.index)
Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=’object’)
print(s1.values)
如何对Series对象进行索引?
1:使用index中的值进行索引
print(s1['a']) # 索引得到标签 a 对应的值 2print(s1[['a','d']]) # 多标签索引时置于一个列表中
a 2
d 5
dtype: int64
可以用切片方法获取 ,注意,切片索引保存最后一个值:
print(s1['b':'d'])
b 3
c 4
d 5
dtype: int64
2:使用下标进行索引
print(s1[0]) # 2print(s1[[0,3]]) # 索引序号为0和3print(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的值进行索引, 而后一种切片选择使用的是下标进行索引。
s1 = pd.Series([2,3,4,5], index=[1,2,3,4])print(s1)# 1 2# 2 3# 3 4# 4 5# dtype: int64print(s1[2]) # 3 使用index的值进行索引# print(s1[0]) # KeyError: 0,使用index的值进行索引,0不存在print(s1[[2,4]]) # 使用index的值进行索引# 2 3# 4 5# dtype: int64print(s1[1:3]) # 切片时,使用下标进行索引,屏蔽了index的值# 2 3# 3 4# dtype: int64
4:使用布尔Series进行索引
使用布尔Series进行索引的时候,其实是要求布尔Series和我们的索引对象有相同的index。
s1 = pd.Series([2,3,4,5], index=['a', 'b', 'c', 'd'])print(s1 > 3)# 结果(这是一个bool Series):# a False# b False# c True# d True# dtype: boolprint(s1[s1 > 3])# 结果(只需要把bool Series 传入Series就可以实现索引):# c 4# d 5# dtype: int64
5:使用Index对象来进行索引
使用Index对象进行索引的时候,和使用值索引没有本质的区别。因为Index里面也存入了很多值,可以把Index看做一个list。
转载自三味书屋
