pandas索引和获取 您所在的位置:网站首页 pandas取index pandas索引和获取

pandas索引和获取

2022-05-16 07:52| 来源: 网络整理| 查看: 265

《pandas索引和获取》

简介

在pandas中最常见的操作就是索引和获取数据,在老版本中使用的ix方法已经被抛弃,转而代之的是loc和iloc方法。

Series操作

在Series中索引和获取的工作方式类似NumPy数组。示例如下:

123456789101112131415 >>>import pandas as pd >>>a = pd.Series(np.arange(5), index=list('abcde'))>>>aa    0b    1c    2d    3e    4dtype: int32 >>>a[1]1>>>a['b']1

可以看出Series的索引值可以是整数,也可以是当前定义的索引值。

12345678910 >>>a[1:3]b    1c    2dtype: int32 >>>a['b':'d']b    1c    2d    3dtype: int32

从这里可以看出,使用标签的切片运算和普通的切片不同,它的末端是包含了结束标签的值。

DataFrame操作

相比于Series,DataFrame中的操作会比较复杂。涉及到获取行或列,获取块数据等操作。可以使用标签切片,也可以使用普通的切片,其中涉及到的方法不同,接下来会一一介绍。

获取行

代码演示:

123456789101112131415161718 >>>a = pd.DataFrame(np.random.randn(4, 3), index=['aa', 'bb', 'cc', 'dd'], columns=list('abc'))>>>a           a         b         caa  0.222784 -0.958186 -0.418945bb  0.079387 -0.407945 -0.439140cc  0.200142  0.674834 -1.769081dd -1.182979 -0.048308 -1.299996 >>>a[0:2]           a         b         caa  0.222784 -0.958186 -0.418945bb  0.079387 -0.407945 -0.439140 >>>a['aa', 'cc']           a         b         caa  0.222784 -0.958186 -0.418945bb  0.079387 -0.407945 -0.439140cc  0.200142  0.674834 -1.769081

可以看出,使用标签切片和普通切片是不同的,前者会包括结束索引。在这里不能使用诸如a[0]这样的操作来获得单独某行,会引发KeyError错误。在后面会讲到如何获取单独一行的方法。

获取列

获取列的方式有两种,一种是使用列标签切片,一种是访问列属性。

代码演示:

12345678910111213 >>>a['c']aa   -0.418945bb   -0.439140cc   -1.769081dd   -1.299996Name: c, dtype: float64 >>>a.caa   -0.418945bb   -0.439140cc   -1.769081dd   -1.299996Name: c, dtype: float64

在这里提倡使用列表切片的方式,因为如果使用列属性的时候可能会发生错误,比如有一个列名叫index,此时调用index列会与pandas中的index属性发生冲突。使用列标签切片的方式还能获取多列数据:

123456 >>>a[['a', 'c']]           a         caa  0.222784 -0.418945bb  0.079387 -0.439140cc  0.200142 -1.769081dd -1.182979 -1.299996

获取块数据

可以使用loc方法和iloc方法获取块状数据,实际使用较多。loc方法接受标签型索引,而iloc方法只接受整数型索引。

方法 描述 iloc[val1, val2] 使用整数索引,val1为行索引,val2为列索引 loc[val1, val2] 使用标签索引,val1为行索引,val2为列索引

代码演示:

123456789101112131415161718192021222324 >>>a           a         b         caa  0.222784 -0.958186 -0.418945bb  0.079387 -0.407945 -0.439140cc  0.200142  0.674834 -1.769081dd -1.182979 -0.048308 -1.299996 # 获取第一行>>>a.loc['aa', :]a    0.222784b   -0.958186c   -0.418945Name: aa, dtype: float64 >>>a.loc[['aa', 'cc'], ['a', 'c']]           a         caa  0.222784 -0.418945cc  0.200142 -1.769081 >>>a.loc['bb':'dd', 'b':'c']           b         cbb -0.407945 -0.439140cc  0.674834 -1.769081dd -0.048308 -1.299996

可以看出,使用loc方法要指明使用的标签索引,并且包含结束标签索引的数据。如果想通过整数索引获取数据,就要使用iloc方法:

123456789101112131415161718192021222324 >>>a           a         b         caa  0.222784 -0.958186 -0.418945bb  0.079387 -0.407945 -0.439140cc  0.200142  0.674834 -1.769081dd -1.182979 -0.048308 -1.299996 # 获取第一行>>>a.iloc[0, :]a    0.222784b   -0.958186c   -0.418945Name: aa, dtype: float64 >>>a.iloc[[0, 2], [0, 2]]           a         caa  0.222784 -0.418945cc  0.200142 -1.769081 >>>a.iloc[1:, 1:]           b         cbb -0.407945 -0.439140cc  0.674834 -1.769081dd -0.048308 -1.299996

使用iloc方法,就要注意使用切片的时候是不包含结束索引的数据。

总结

pandas中基本的索引和获取操作就是这些,在实际使用中应该学会触类旁通、举一反三。

相关文章 pandas数据结构 Python运算符 pandas处理缺失数据


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有