pandas索引和获取 | 您所在的位置:网站首页 › pandas取index › 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 实验室设备网 版权所有 |