详谈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的源码来解析Python下的freeblock
May 11 Python
Python 模拟登陆的两种实现方法
Aug 10 Python
Python进阶之@property动态属性的实现
Apr 01 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
详解Python高阶函数
Aug 15 Python
Python字典dict常用方法函数实例
Nov 09 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
讲解Python实例练习逆序输出字符串
May 06 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的实现代码
2011/08/08 PHP
PHP中比较时间大小实例
2014/08/21 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
在Python中使用第三方模块的教程
2015/04/27 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
itchat-python搭建微信机器人(附示例)
2019/06/11 Python
python自动识别文本编码格式代码
2019/12/26 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
中药学专业求职信
2014/05/31 职场文书
建筑工地质量标语
2014/06/12 职场文书
给领导的感谢信范文
2015/01/23 职场文书
学生检讨书范文
2015/01/27 职场文书
PyTorch中的torch.cat简单介绍
2022/03/17 Python