Pandas现在支持三种类型的多轴索引;

编号 索引 描述
1 .loc() 基于标签
2 .iloc() 基于整数
3 .ix() 基于标签和整数

.loc()

Pandas提供了各种方法来完成基于标签的索引。 切片时,也包括起始边界。整数是有效的标签,但它们是指标签而不是位置。

.loc()具有多种访问方式,如 -

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

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

示例1

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)
print('\n') print (df.loc[:,'A'])

输出结果:

   A     B      C      D
a   0.128933    1.113168    -2.908401   0.825420
b   -1.386837   0.757495   1.632173     0.293825
c   -0.131808   -1.372547   -0.623156   -0.090892
d   0.849492    -0.065772   -1.255859   2.891958
e   0.515384    0.781924     -0.816875   0.476188
f   1.962588     1.220072     -0.112463   -1.108805
g   -0.893393   -0.346143    -0.757856   -0.871637
h   -1.307739   -0.263241    -1.898776   0.621455

a    0.128933
b    -1.386837
c    -0.131808
d    0.849492
e    0.515384
f    1.962588
g    -0.893393
h    -1.307739
Name: A, dtype: float64

 

示例2

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','C']])
输出结果:
          A         C
a -0.529735 -1.067299
b -2.230089 -1.798575
c 0.685852 0.333387
d 1.061853 0.131853
e 0.990459 0.189966
f 0.057314 -0.370055
g 0.453960 -0.624419
h 0.666668 -0.433971
 

示例3

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','b','f','h'],['A','C']])

输出结果:

          A         C
a -1.959731 0.720956
b 1.318976 0.199987
f -1.117735 -0.181116
h -0.147029 0.027369

示例4


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':'h'])          # 没有写列标签,就将所有的列全部输出
输出结果:
          A         B         C         D
a 1.556186 1.765712 1.060657 0.810279
b 1.377965 -0.183283 -0.224379 0.963105
c -0.530016 0.167183 -0.066459 0.074198
d -1.515189 -1.453529 -1.559400 1.072148
e -0.487399 0.436143 -1.045622 -0.029507
f 0.552548 0.410745 0.570222 -0.628133
g 0.865293 -0.638388 0.388827 -0.469282
h -0.690596 1.765139 -0.492070 -0.176074
 

示例5

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']>0)      # 逻辑判断

输出结果 -

A    False
B True
C False
D True
Name: a, dtype: bool
 

.iloc()

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

各种访问方式如下 -

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

示例1:默认按行取

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df.iloc[:4])

输出结果:

          A         B         C         D
0 0.277146 0.274234 0.860555 -1.312323
1 -1.064776 2.082030 0.695930 2.409340
2 0.033953 -1.155217 0.113045 -0.028330
3 0.241075 -2.156415 0.939586 -1.670171
 

示例2:带逗号,则是行列

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df.iloc[:4])
print (df.iloc[1:5, 2:4])
输出结果:
          A         B         C         D
0 1.346210 0.251839 0.975964 0.319049
1 0.459074 0.038155 0.893615 0.659946
2 -1.097043 0.017080 0.869331 -1.443731
3 1.008033 -0.189436 -0.483688 -1.167312
C D
1 0.893615 0.659946
2 0.869331 -1.443731
3 -0.483688 -1.167312
4 1.566395 -1.292206
 

示例3

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) print (df.iloc[[1, 3, 5], [1, 3]])
print (df.iloc[1:3, :])
print (df.iloc[:,1:3])

输出结果:

          B         D
1 0.081257 0.009109
3 1.037680 -1.467327
5 1.106721 0.320468
A B C D
1 -0.133711 0.081257 -0.031869 0.009109
2 0.895576 -0.513450 -0.048573 0.698965
B C
0 0.442735 -0.949859
1 0.081257 -0.031869
2 -0.513450 -0.048573
3 1.037680 -0.801157
4 -0.547456 -0.255016
5 1.106721 0.688142
6 -0.466452 0.219914
7 1.583112 0.982030
 

.ix()

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

示例1

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df.ix[:4])

输出结果:

          A         B         C         D
0 -1.449975 -0.002573 1.349962 0.539765
1 -1.249462 -0.800467 0.483950 0.187853
2 1.361273 -1.893519 0.307613 -0.119003
3 -0.103433 -1.058175 -0.587307 -0.114262
4 -0.612298 0.873136 -0.607457 1.047772
 

示例2

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df.ix[:,'A'])
输出结果:
0    1.539915
1 1.359477
2 0.239694
3 0.563254
4 2.123950
5 0.341554
6 -0.075717
7 -0.606742
Name: A, dtype: float64

其他方法

使用符号

使用多轴索引从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对象上执行每个操作。这里使用基本索引运算符[] -

示例1

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df['A'])

输出结果:

0    0.028277
1 -1.037595
2 -0.563495
3 -1.196961
4 -0.805250
5 -0.911648
6 -0.355171
7 -0.232612
Name: A, dtype: float64
 

示例2

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df[['A','B']])

输出结果:

          A         B
0 -0.767339 -0.729411
1 -0.563540 -0.639142
2 0.873589 -2.166382
3 0.900330 0.253875
4 -0.520105 0.064438
5 -1.452176 -0.440864
6 -0.291556 -0.861924
7 -1.464235 0.313168
 

示例3

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df[2:2])

输出结果:

Empty DataFrame
Columns: [A, B, C, D]
Index: []
 

属性访问

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

示例

import pandas as pd
import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D'])
print (df.A)

输出结果:

0    0.104820
1 -1.206600
2 0.469083
3 -0.821226
4 -1.238865
5 1.083185
6 -0.827833
7 -0.199558
Name: A, dtype: float64

Pandas | 13 索引和选择数据的更多相关文章

  1. pandas 学习 第14篇:索引和选择数据

    数据框和序列结构中都有轴标签,轴标签的信息存储在Index对象中,轴标签的最重要的作用是: 唯一标识数据,用于定位数据 用于数据对齐 获取和设置数据集的子集. 本文重点关注如何对序列(Series)和 ...

  2. Python 数据分析 - 索引和选择数据

    loc,iloc,ix三者间的区别和联系 loc .loc is primarily label based, but may also be used with a boolean array. 就 ...

  3. Pandas索引和选择数据

    在本章中,我们将讨论如何切割和丢弃日期,并获取Pandas中大对象的子集. Python和NumPy索引运算符"[]"和属性运算符".". 可以在广泛的用例中快 ...

  4. pandas选择数据-【老鱼学pandas】

    选择列 根据列名来选择某列的数据 import pandas as pd import numpy as np dates = pd.date_range("2017-01-08" ...

  5. 【转】Pandas学习笔记(二)选择数据

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  6. pandas处理时间序列(2):DatetimeIndex、索引和选择、含有重复索引的时间序列、日期范围与频率和移位、时间区间和区间算术

    一.时间序列基础 1. 时间戳索引DatetimeIndex 生成20个DatetimeIndex from datetime import datetime dates = pd.date_rang ...

  7. pandas实战——对星巴克数据的分析

    一.实验对象 实验对象为星巴克在全球的门店数据,我们可以使用pandas对其进行简单的分析,如分析每个国家星巴克的数量,根据门店数量对国家进行排序等. 二.数据分析 1.读取数据并获取数据行列数 首先 ...

  8. 05-pandas索引切片读取数据缺失数据处理

    引入 numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候, ...

  9. Pandas里面常用的一些数据分析函数总结

    import pandas as pdimport numpy as np pandas 有两个主要的数据结构:Series 和 DataFrame:Series 是一个一维数组对象 ,它包含一组索引 ...

随机推荐

  1. Java连载18-引用数据类型、三元运算符、控制语句if

    一.引用类型 1.String是sun在JAVASE中提供的字符串类型 2.String.class字码 3.String是引用数据类型,s是变量名,“abc”是字面值: String s = &qu ...

  2. Visual Studio2017专业版和企业版密钥

    Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

  3. go-gin-api 路由中间件 - Jaeger 链路追踪

    概述 首先同步下项目概况: 上篇文章分享了,路由中间件 - Jaeger 链路追踪(理论篇). 这篇文章咱们分享:路由中间件 - Jaeger 链路追踪(实战篇). 说实话,这篇文章确实让大家久等了, ...

  4. 使用AtomicInteger写一个显示锁

    利用了AtomicInteger的compareAndSet方法 public class CASLock { private AtomicInteger value = new AtomicInte ...

  5. scala中val和var的区别

    1:内容是否可变:val修饰的是不可变的,var修饰是可变的 2:val修饰的变量在编译后类似于java中的中的变量被final修饰 3:lazy修饰符可以修饰变量,但是这个变量必须是val修饰的 p ...

  6. 目标检测算法之R-CNN和SPPNet原理

    一.R-CNN的原理 R-CNN的全称是Region-CNN,它可以说是第一个将深度学习应用到目标检测上的算法.后面将要学习的Fast R-CNN.Faster R-CNN全部都是建立在R-CNN基础 ...

  7. 【问题记录】ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

    一.问题描述 环境:MySQL 8.0 + Windows 由于密码错误或者其他原因导致无法连上MySQL服务,如下图: 二.解决方案 解决该问题的具体步骤如下: 1.关闭MySQL服务 以管理员权限 ...

  8. [转] Performance — 前端性能监控利器

    timing (PerformanceTiming) 从输入url到用户可以使用页面的全过程时间统计,会返回一个PerformanceTiming对象,单位均为毫秒 按触发顺序排列所有属性:(更详细标 ...

  9. spring好文章整理

    彻底搞明白Spring中的自动装配和Autowired IDEA编译spring 5源码 Spring源码——IDEA读Spring源码环境搭建 导入spring源码org.springframewo ...

  10. SQL Date 时间类型处理

    SQL 日期(Dates)   2019-10-17 22:17:26 当我们处理日期时,最难的任务恐怕是确保插入的日期的格式,与数据库中日期列的格式相匹配. 保存的如果是日期部分,查询不会有太大问题 ...