全文字数:1561字
阅读时间:8分钟
前言
由于在公众号上文本字数太长可能会影响阅读体验,因此过于长的文章,我会使用"[L1]"来进行分段。这系列将介绍Pandas模块中的Series,本文主要介绍:
- 通过Series的索引获取值
- 位置索引
- 名称索引
- 点索引
快速掌握Series系列:
[L1]快速掌握Series~创建Series
[L2]快速掌握Series~Series的属性
a
Series的索引
Series简单来说就是带有索引的一维数组,很自然的可以通过索引来获取对应的value值,我们有三种方式进行索引:
- 位置索引。通过0 ~ n-1[n为Series中索引个数]进行索引;
- 名称索引。通过传入指定的index名称来进行索引;
- 获取单个索引值;
- 获取多个索引值;
- 点索引。通过".index名称"的形式进行索引;
下面来分别介绍这三种索引方式以及需要注意的地方。
代码语言:javascript复制import pandas as pd
s = pd.Series([1,2,3,4],index = ["a","b","c","d"])
print(s)
- 位置索引
# 位置索引
print(s[0])
print(s[-1])
print(s[2])
result:
1
4
3
此处的位置索引类似python中的list列表,不仅能够正向索引[从0开始]而且还能够反向索引[从-1开始反向索引]。
- 名称索引
# index名称索引
#获取单个索引值
print(s["a"])
print("*"*6)
#获取多个索引值
print(s[["a","b","c"]])
result:
1
******
a 1
b 2
c 3
dtype: int64
使用名称索引不仅可以索引单个value值,也可以索引多个value值。平时用的最多的就是位置索引和名称索引,说一说使用他们的时候需要注意的地方:
- 我们知道Series的index索引可以是任意类型,如果index为整数类型,那么位置索引就会失效。
import pandas as pd
s = pd.Series(["a","b","c","d"],index = [1,3,4,5])
# 此处使用位置索引会抛出异常KeyError
# print(s[-1])
# print(s[2])
#此处得到的结果是名称索引
print(s[3])
result:
b
- 由于Series的index是可以重复的,对于位置索引来说无论index是否重复都与索引没有关系,但是如果使用名称索引的话,索引出来的是结果是一个具有相同index的Series对象。
import pandas as pd
s = pd.Series(["a","b","c","d"],index = [1,1,4,5])
# 此处使用的是名称索引
print(s[1])
result:
1 a
1 b
dtype: object
- 点索引
平时使用名称索引以及位置索引足够使用。点索引使用有很多局限性:
- 点索引只使用于Series的index类型为非数值类型才可以使用;
- 如果Series中的index中有一些索引名称与Python的一些关键字或者一些函数名重名的话,会导致无法获取Series的值;
import pandas as pd
# 此时的index为数值类型
s = pd.Series(["a","b","c","d"],index = [1,2,3,4])
# 会抛出语法错误的异常SyntaxError
# print(s.2)
代码语言:javascript复制import pandas as pd
# 此时的index为数值类型
s = pd.Series([1,2,3,4],index = ["a","b","c","def"])
# 通过点索引获取value值
print(s.a)
# 会抛出语法错误的异常SyntaxError
# print(s.def)
result:
1