详谈Pandas中iloc和loc以及ix的区别


Posted in Python onJune 08, 2018

Pandas库中有iloc和loc以及ix可以用来索引数据,抽取数据。但是方法一多也容易造成混淆。下面将一一来结合代码说清其中的区别。

1. iloc和loc的区别:

iloc主要使用数字来索引数据,而不能使用字符型的标签来索引数据。而loc则刚好相反,只能使用字符型标签来索引数据,不能使用数字来索引数据,不过有特殊情况,当数据框dataframe的行标签或者列标签为数字,loc就可以来其来索引。

好,先上代码,先上行标签和列标签都为数字的情况。

import pandas as pd
import numpy as np
a = np.arange(12).reshape(3,4)
print a
>>>
[[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]]
df = pd.DataFrame(a)
print df
>>>
 0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
print df.loc[0]
>>>
0 0
1 1
2 2
3 3
Name: 0, dtype: int32
print df.iloc[0]
0 0
1 1
2 2
3 3
Name: 0, dtype: int32
print df.loc[:,[0,3]]
 0 3
0 0 3
1 4 7
2 8 11
print df.iloc[:,[0,3]]
 0 3
0 0 3
1 4 7
2 8 11

接下来是把行标签[0, 1, 2]改成['a', 'b', 'c'],则成这样了。

df.index = ['a','b','c'] 
print df 
>>> 
 0 1 2 3 
a 0 1 2 3 
b 4 5 6 7 
c 8 9 10 11 
print df.loc[0] 
# TypeError: cannot do label indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [0] of <type 'int'> 
print df.iloc[0] 
>>> 
0 0 
1 1 
2 2 
3 3 
Name: a, dtype: int32 
print df.iloc['a'] # TypeError: cannot do positional indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [a] of <type 'str'> 
print df.loc['a'] # 正确 
>>> 
0 0 
1 1 
2 2 
3 3 
Name: a, dtype: int32

同样地,把列标签[0, 1, 2, 3]改成['A', 'B, 'C', 'D'],则成这样了。

df.columns = ['A','B','C','D']
print df
>>>
 A B C D
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
print df.loc[:,'A']
>>>
a 0
b 4
c 8
Name: A, dtype: int32
print df.iloc[:,'A'] # ValueError: Location based indexing can only have [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array] types

2.ix是一种混合索引,字符型标签和整型数据索引都可以。

print df.ix[0]
>>>
A 0
B 1
C 2
D 3
Name: a, dtype: int32
print df.ix['a']
>>>
A 0
B 1
C 2
D 3
Name: a, dtype: int32
print df.ix[:,0]
>>>
a 0
b 4
c 8
Name: A, dtype: int32
print df.ix[:,'A']
>>>
a 0
b 4
c 8
Name: A, dtype: int32

以上这篇详谈Pandas中iloc和loc以及ix的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中文件操作简明介绍
Apr 13 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
python魔法方法-属性转换和类的表示详解
Jul 22 Python
Python实现的个人所得税计算器示例
Jun 01 Python
python opencv实现运动检测
Jul 10 Python
Python提取频域特征知识点浅析
Mar 04 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Django stark组件使用及原理详解
Aug 22 Python
python和js交互调用的方法
Jun 23 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
python实现人人自动回复、抢沙发功能
Jun 08 #Python
利用Python写一个爬妹子的爬虫
Jun 08 #Python
python os用法总结
Jun 08 #Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 #Python
浅谈Pandas 排序之后索引的问题
Jun 07 #Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 #Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 #Python
You might like
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
jquery 使用简明教程
2014/03/05 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
从0开始学Vue
2016/10/27 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
python生成excel的实例代码
2017/11/08 Python
python如何在循环引用中管理内存
2018/03/20 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
Python调用C语言的实现
2019/07/26 Python
python实现在多维数组中挑选符合条件的全部元素
2019/11/26 Python
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
青岛海底世界导游词
2015/02/11 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏
Python利用capstone实现反汇编
2022/04/06 Python