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

 更新时间:2018年06月08日 08:33:56   作者:Modozil  
今天小编就为大家分享一篇详谈Pandas中iloc和loc以及ix的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用PyQt5制作一个豆瓣电影信息查看器

    利用PyQt5制作一个豆瓣电影信息查看器

    这篇文章主要介绍了如何通过PyQt5制作一个查看器,可以查看豆瓣前100名电影的信息,当然这个爬取信息比较简单。感兴趣的小伙伴可以试一试
    2022-01-01
  • Python drop()删除行列的操作方法

    Python drop()删除行列的操作方法

    这篇文章主要介绍了Python drop()删除行列的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • go和python变量赋值遇到的一个问题

    go和python变量赋值遇到的一个问题

    这篇文章主要介绍了go和python变量赋值遇到的一个问题的相关资料,需要的朋友可以参考下
    2017-08-08
  • Python中使用多进程来实现并行处理的方法小结

    Python中使用多进程来实现并行处理的方法小结

    本篇文章主要介绍了Python中使用多进程来实现并行处理的方法小结,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 初探Python元编程之理解并使用元编程改变代码的代码示例

    初探Python元编程之理解并使用元编程改变代码的代码示例

    在Python编程中,有一种强大的技术允许我们在运行时修改或生成代码,这就是元编程,Python的元编程工具包括装饰器,元类,以及函数和类的各种动态修改技术,这篇文章将向你介绍元编程的基本概念,并通过实例讲解如何使用元编程
    2023-07-07
  • python实现一个通用的插件类

    python实现一个通用的插件类

    插件管理器用于注册、销毁、执行插件,本文主要介绍了python实现一个通用的插件类,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • 将tensorflow的ckpt模型存储为npy的实例

    将tensorflow的ckpt模型存储为npy的实例

    今天小编就为大家分享一篇将tensorflow的ckpt模型存储为npy的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python Playwright库从入门到实战教程

    Python Playwright库从入门到实战教程

    Playwright是一个用于自动化Web浏览器测试的库,它提供了一种高级的API来模拟用户行为,无论是在自动化测试、爬虫还是生成复杂的用户交互场景中都非常有用,这篇文章主要介绍了Python Playwright库从入门到实战的相关资料,需要的朋友可以参考下
    2025-12-12
  • Python多进程并发与同步机制超详细讲解

    Python多进程并发与同步机制超详细讲解

    进程(Process),顾名思义,就是进行中的程序。有一句话说得好:程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体。进程是资源分配的最小单元,也就是说每个进程都有其单独的内存空间
    2022-12-12
  • 举例讲解Python中is和id的用法

    举例讲解Python中is和id的用法

    这篇文章主要介绍了举例讲解Python中is和id的用法,是Python学习当中的基础知识,作者举例进行了简单说明,需要的朋友可以参考下
    2015-04-04

最新评论