看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
今天我们来看一下 series 的索引和切片。类似于列表,Series 也实现了索引和切片操作,通过索引和切片我们可以找到 Series 的相关内容。
首先我们导入 pandas,别名为 pd,构造这样的一个数据集
import pandas as pd
ser = pd.Series([*'976253'], index=[*'abcdef'])
ser
'''
a 9
b 7
c 6
d 2
e 5
f 3
dtype: object
'''
这个数据集的它的索引是 abcdef,值是 976253,是我们随机给的这样的一些数据。要注意的是这两个数据,我们采用的是将字符串进行解包生成一个列表来产生的。
和列表一样,每个 Series 也有一个自然索引位,可以通过索引获取这个位置上的值。
ser[0] # 第一个位置
# '9'
ser[-1] # 最后一个位置
# '3'
ser[-2] # 倒数第二个位置
# '5'
我们之前讲过的 Series 字典特性,可以通过 key(索引标签)来获取值,可以理解成为另外一个索引方式。
ser['a']
# '9'
ser['e']
# '5'
可以在抽取操作中传入标签列表,直接查询这些标签的内容:
ser[['a', 'b']]
'''
a 9
b 7
dtype: object
'''
ser[['e', 'c', 'b']]
'''
e 5
c 6
b 7
dtype: object
'''
切片中支持 Python 省略号常量,得到是全部数据:
ser[...]
ser[Ellipsis] # 同上
'''
a 9
b 7
c 6
d 2
e 5
f 3
dtype: object
'''
如果列表的切片功能一样, Series 也支持切片,我们按切片的方式取部分内容。
ser[1:3]
'''
b 7
c 6
dtype: object
'''
ser[1:2]
'''
b 7
dtype: object
'''
还支持开放式切片:
ser[4:]
'''
e 5
f 3
dtype: object
'''
ser[:4]
'''
a 9
b 7
c 6
d 2
dtype: object
'''
也支持步长:
ser[1:5:2]
'''
b 7
d 2
dtype: object
'''
可以将索引标签值作为切片的值,不过要注意的是,切片包含左右两端的标签值位。
ser['a':'c']
'''
a 9
b 7
c 6
dtype: object
'''
ser['a':'d']
'''
a 9
b 7
c 6
d 2
dtype: object
'''
以上均包含右端 c 和 d 标签位的数据。
也支持步长:
ser['a':'d':2]
'''
a 9
c 6
dtype: object
'''
也支持开放式切片:
ser[:'c']
'''
a 9
b 7
c 6
dtype: object
'''
ser[:]
'''
a 9
b 7
c 6
d 2
e 5
f 3
dtype: object
'''
如果你的标签值是数字,时候呢可能在操作上会出现一些问题。我们看一下我们将这个数据的 index 改为数据数值,得到二和四这样的两个数据。
ser.index = [1, 2, 4, 6, 8, 10]
ser
'''
1 9
2 7
4 6
6 2
8 5
10 3
dtype: object
'''
想获得标签 2 到 4 的数据:
ser[2:4]
'''
4 6
6 2
dtype: object
'''
发现它按自然索引进行了选取,如果想取标签值范围的呢?这时候就要使用 loc[]
方法来完成。
ser.loc[2:4]
'''
2 7
4 6
dtype: object
'''
它会将传入的切片值按标签值计算。
关于 loc[]
的用法我们会在后续的学习中做详细介绍。
(完)
更新时间:2022-12-12 17:09:56 标签:pandas series 索引 切片