Python和NumPy索引运算符"[]"和属性运算符"."。 可以在广泛的用例中快速轻松地访问_Pandas_数据结构。然而,由于要访问的数据类型不是预先知道的,所以直接使用标准运算符具有一些优化限制。对于生产环境的代码,我们建议利用本章介绍的优化_Pandas_数据访问方法。 _Pandas_现在支持三种类型的多轴索引; 这三种类型在下表中提到 -

编号

索引

描述

1

.loc()

基于标签

2

.iloc()

基于整数

3

.ix()

基于标签和整数

.loc()

_Pandas_提供了各种方法来完成基于标签的索引。 切片时,也包括起始边界。整数是有效的标签,但它们是指标签而不是位置。 .loc()具有多种访问方式,如 -

  • 单个标量标签
  • 标签列表
  • 切片对象
  • 一个布尔数组

loc需要两个单/列表/范围运算符,用","分隔。第一个表示行,第二个表示列。

.iloc()

_Pandas_提供了各种方法,以获得纯整数索引。像python和numpy一样,第一个位置是基于0的索引。 各种访问方式如下 -

  • 整数
  • 整数列表
  • 系列值

.ix()

除了基于纯标签和整数之外,_Pandas_还提供了一种使用.ix()运算符进行选择和子集化对象的混合方法。

使用符号

使用多轴索引从Pandas对象获取值可使用以下符号 -

对象

索引

描述

Series

s.loc[indexer]

标量值

DataFrame

df.loc[row_index,col_index]

标量对象

Panel

p.loc[item_index,major_index, minor_index]

p.loc[item_index,major_index, minor_index]

注意 - .iloc().ix()应用相同的索引选项和返回值。

现在来看看如何在DataFrame对象上执行每个操作。这里使用基本索引运算符[] -

属性访问

可以使用属性运算符.来选择列。

代码举例

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(8, 4),
index=[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’], columns=[‘A’, ‘B’, ‘C’, ‘D’])

print(df.loc[:, ‘A’]) # loc需要两个单/列表/范围运算符,用",“分隔。第一个表示行,第二个表示列
print(df.loc[:, [‘A’, ‘C’]])
print(df.loc[[‘a’, ‘b’, ‘f’, ‘h’], [‘A’, ‘C’]])
print(df.loc[‘a’:‘h’])
print(df.loc[‘a’] > 0)
print(”-------------------------------------")
print(df.iloc[:4]) # 第一个位置是基于0的索引
print(df.iloc[1:5, 2:4])
print(df.iloc[[1, 3, 5], [1, 3]])
print(df.iloc[1:3, :])
print(df.ix[:4]) # 选择和子集化对象的混合方法
print(df.ix[:, ‘A’])
print(df[[‘A’, ‘B’]])
print(df[2:2])
print(df.A) # 可以使用属性运算符.来选择列

代码 Github地址:https://github.com/shadowagnoy/python_learn/