详谈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使用tensorflow保存、加载和使用模型的方法
Jan 31 Python
pandas表连接 索引上的合并方法
Jun 08 Python
解决python中无法自动补全代码的问题
Dec 04 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
Python字符串的常见操作实例小结
Apr 08 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
Python 数据的累加与统计的示例代码
Aug 03 Python
Python调用C/C++的方法解析
Aug 05 Python
Python pip install之SSL异常处理操作
Sep 03 Python
Python特殊属性property原理及使用方法解析
Oct 09 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 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+Html+缓存
2006/12/20 PHP
drupal 代码实现URL重写
2011/05/04 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
form.submit()不能提交表单的错误原因及解决方法
2014/10/13 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
详解Python爬虫的基本写法
2016/01/08 Python
EM算法的python实现的方法步骤
2018/01/02 Python
python实现周期方波信号频谱图
2018/07/21 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python顺序执行多个py文件的方法
2019/06/29 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
pycharm的python_stubs问题
2020/04/08 Python
Python Selenium库的基本使用教程
2021/01/04 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
企业安全标语
2014/06/07 职场文书
父亲节活动总结
2015/02/12 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
2015年七夕情人节感言
2015/08/03 职场文书
大学生社会实践感想
2015/08/11 职场文书
《实心球》教学反思
2016/02/23 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers