loc,iloc,ix三者间的区别和联系

loc

.loc is primarily label based, but may also be used with a boolean array.

就是说,loc方法主要是用label来选择数据的。[1]

  • A single label, e.g. 5 or 'a', (note that 5 is interpreted as a label of the index. This use is not an integer position along the index)
  • A list or array of labels ['a', 'b', 'c']
  • A slice object with labels 'a':'f', (note that contrary to usual python slices, both the start and the stop are included!)
  • A boolean array

总的形式还是要保持的df[xx:xx,xx:xx],只不过这里边可以不用切片,但是中间的,还是很关键的。可以不写,,那么,就表示取某一行。但是,不能表示取某一列。

import pandas as pd

import numpy as np

test=pd.DataFrame(np.random.randn(20).reshape(4,5),index=['A','B','C','D'],columns=['E','F','G','H','I'])

test
Out[4]:
E F G H I
A -0.833316 -1.982666 1.055594 0.781759 -0.107631
B -1.514709 -1.422883 0.204399 -0.487639 -1.652785
C -0.424735 0.400529 -0.786582 0.855885 0.059894
D 2.016221 -1.314878 -1.745535 -0.907778 0.834966 test.loc['A']
Out[5]:
E -0.833316
F -1.982666
G 1.055594
H 0.781759
I -0.107631
Name: A, dtype: float64 test.loc['E']
KeyError: 'the label [E] is not in the [index]' #看见了吧,是“闭区间”
test.loc['A':'B','E':'F']
Out[8]:
E F
A -0.833316 -1.982666
B -1.514709 -1.422883

label切片选择时,貌似是“闭区间”,:后边的也是包含进去的。

iloc

.iloc is primarily integer position based (from 0 to length-1 of the axis), but may also be used with a boolean array.

iloc主要就是基于position的选择。注意了,这里的position选择是一种”左闭右开“区间,意思就是df[m:n]只选择m:n-1行的数据。

  • An integer e.g. 5
  • A list or array of integers [4, 3, 0]
  • A slice object with ints 1:7
  • A boolean array
import pandas as pd

import numpy as np

test=pd.DataFrame(np.random.randn(20).reshape(4,5),index=['A','B','C','D'],columns=['E','F','G','H','I'])

test
Out[4]:
E F G H I
A -0.833316 -1.982666 1.055594 0.781759 -0.107631
B -1.514709 -1.422883 0.204399 -0.487639 -1.652785
C -0.424735 0.400529 -0.786582 0.855885 0.059894
D 2.016221 -1.314878 -1.745535 -0.907778 0.834966 #看见了吧,是“左闭右开”区间呀!
test.iloc[0:1,0:1]
Out[10]:
E
A -0.833316

ix

.ix supports mixed integer and label based access. It is primarily label based, but will fall back to integer positional access unless the corresponding axis is of integer type.

ix就是一种集大成者的选择方法呀!既支持position选择,也支持label选择。主要是label选择。

import pandas as pd

import numpy as np

test=pd.DataFrame(np.random.randn(20).reshape(4,5),index=['A','B','C','D'],columns=['E','F','G','H','I'])

test
Out[4]:
E F G H I
A -0.833316 -1.982666 1.055594 0.781759 -0.107631
B -1.514709 -1.422883 0.204399 -0.487639 -1.652785
C -0.424735 0.400529 -0.786582 0.855885 0.059894
D 2.016221 -1.314878 -1.745535 -0.907778 0.834966 #下面的`ix`是不是和`loc`作用差不多啊~
test.ix['A':'B','E':'F']
Out[12]:
E F
A -0.833316 -1.982666
B -1.514709 -1.422883 #下面的是和`iloc`差不多了
test.ix[0:1,0:1]
Out[11]:
E
A -0.833316

但是需要注意的是,当index或者columns是整数时,ix索引其实是按label选择的,因此,是闭区间的

参考

发现还是官方文档说的最详细啊!希望以后有机会多看看这里的内容~


  1. 官方文档-Indexing and Selecting Data ↩︎

Python 数据分析 - 索引和选择数据的更多相关文章

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

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

  2. Pandas索引和选择数据

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

  3. Python数据分析:大众点评数据进行选址

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:砂糖侠 如果你处于想学Python或者正在学习Python,Pyth ...

  4. Pandas | 13 索引和选择数据

    Pandas现在支持三种类型的多轴索引; 编号 索引 描述 1 .loc() 基于标签 2 .iloc() 基于整数 3 .ix() 基于标签和整数 .loc() Pandas提供了各种方法来完成基于 ...

  5. Python数据分析之双色球高频数据统计

    Step1:基础数据准备(通过爬虫获取到),以下是从第一期03年双色球开奖号到今天的所有数据整理,截止目前一共2549期,balls.txt 文件内容如下 : 备注:想要现成数据的可以给我发邮件哟~ ...

  6. python数据分析之csv/txt数据的导入和保存

    约定: import numpy as np import pandas as pd 1 2 3 一.CSV数据的导入和保存 csv数据一般格式为逗号分隔,可在excel中打开展示. 示例 data1 ...

  7. Python 数据分析—第七章 数据归整:清理、转换、合并、重塑

    一.数据库风格的Dataframe合并 import pandas as pd import numpy as np df1 = pd.DataFrame({'1key':['b','b','a',' ...

  8. python数据分析第二版:数据加载,存储和格式

    一:读取数据的函数 1.读取csv文件 import numpy as np import pandas as pd data = pd.read_csv("C:\\Users\\Admin ...

  9. Python数据分析之全球人口数据

    这篇文章用pandas对全球的人口数据做个简单分析.我收集全球各国1960-2019年人口数据,包含男女和不同年龄段,共6个文件. pop_total.csv: 各国每年总人口 pop_female. ...

随机推荐

  1. LeetCode122.买卖股票的最佳时机II

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  2. jsp重新打开一个新的页面

    有以下一种实现方式: 1.target="_blank” <a href="document.html" target="_blank"> ...

  3. EL语言表达式 (三)【EL中的算术运算以及判断EL对象是否为空】

    一.EL中的算术运算 EL和其他语言一样,同样也提供了基本的算术运算(加.减.乘.除和取余),如下图. 运算符 功能 示例 结果 + 加 ${19+1} 20 - 减 ${66-30} 36 * 乘 ...

  4. TP增删改

    增加数据 <?php namespace Home\Controller; use Think\Controller; class IndexController extends Control ...

  5. sqlserver备份还原数据库时报占用错误

    .做项目时遇到这种情形:原来的test_dev数据库,想复制出test_ft供测试用.此时备份test_dev出test_backup文件,想直接还原成test_ft时会报占用错误. 还原数据库:Th ...

  6. 1.python虚拟环境的安装-用以同时使用py2,py3

    第一步:安装环境支持[linux下在前加sudo] http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl pip install virtualenv 第 ...

  7. django2.0 路由规则

    Django2.0中URL的路由机制 路由是关联url及其处理函数关系的过程.Django的url路由配置在settings.py文件中ROOT_URLCONF变量指定全局路由文件名称. Django ...

  8. Linux服务器配置---安装nfs

    安装nfs NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下. 由于NFS支持的功能很多,不同功能会使用不同程序 ...

  9. java实现 HTTP/HTTPS请求绕过证书检测代码实现

    java实现 HTTP/HTTPS请求绕过证书检测代码实现 1.开发需求 需要实现在服务端发起HTTP/HTTPS请求,访问其他程序资源. 2.URLConnection和HTTPClient的比较 ...

  10. PHP官方文档和phpstorm配置指南

    http://cn2.php.net/manual/zh/ phpstorm安装——>next——>…… 下载PHP.exe 地址:http://www.php.net/ 配置interp ...