详谈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实现字符串格式化的方法小结
Feb 20 Python
浅谈Python中range和xrange的区别
Dec 20 Python
Python3爬虫学习入门教程
Dec 11 Python
python字符串替换第一个字符串的方法
Jun 26 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
Python for循环搭配else常见问题解决
Feb 11 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
Feb 17 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
python 实现汉诺塔游戏
Nov 28 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
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
javascript之querySelector和querySelectorAll使用介绍
2011/12/20 Javascript
JavaScript基础知识之数据类型
2012/08/06 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
优化RequireJS项目的相关技巧总结
2015/07/01 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
ES6中的Javascript解构的实现
2020/10/30 Javascript
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
详解Python3 基本数据类型
2019/04/19 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
什么是事务?事务有哪些性质?
2012/03/11 面试题
什么是抽象
2015/12/13 面试题
通信工程专业个人找工作求职信范文
2013/09/21 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
vue 自定义组件添加原生事件
2022/04/21 Vue.js