前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[L3]快速掌握Series~通过Series索引获取指定值

[L3]快速掌握Series~通过Series索引获取指定值

作者头像
触摸壹缕阳光
发布2020-05-13 14:27:49
5.5K0
发布2020-05-13 14:27:49
举报

全文字数:1561字

阅读时间:8分钟

前言

由于在公众号上文本字数太长可能会影响阅读体验,因此过于长的文章,我会使用"[L1]"来进行分段。这系列将介绍Pandas模块中的Series,本文主要介绍:

  • 通过Series的索引获取值
    • 位置索引
    • 名称索引
    • 点索引

快速掌握Series系列:

[L1]快速掌握Series~创建Series

[L2]快速掌握Series~Series的属性

a

Series的索引

Series简单来说就是带有索引的一维数组,很自然的可以通过索引来获取对应的value值,我们有三种方式进行索引:

  1. 位置索引。通过0 ~ n-1[n为Series中索引个数]进行索引;
  2. 名称索引。通过传入指定的index名称来进行索引;
    1. 获取单个索引值;
    2. 获取多个索引值;
  3. 点索引。通过".index名称"的形式进行索引;

下面来分别介绍这三种索引方式以及需要注意的地方。

代码语言:javascript
复制
import pandas as pd

s = pd.Series([1,2,3,4],index = ["a","b","c","d"])
print(s)
  • 位置索引
代码语言:javascript
复制
# 位置索引
print(s[0])
print(s[-1])
print(s[2])

result:
1
4
3

此处的位置索引类似python中的list列表,不仅能够正向索引[从0开始]而且还能够反向索引[从-1开始反向索引]。

  • 名称索引
代码语言:javascript
复制
# 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为整数类型,那么位置索引就会失效。
代码语言:javascript
复制
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对象。
代码语言:javascript
复制
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
  • 点索引

平时使用名称索引以及位置索引足够使用。点索引使用有很多局限性:

  1. 点索引只使用于Series的index类型为非数值类型才可以使用;
  2. 如果Series中的index中有一些索引名称与Python的一些关键字或者一些函数名重名的话,会导致无法获取Series的值;
代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档