python中的ix是啥_详谈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 with these indexers [0] of

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 with these indexers [a] of

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 结构体_mysql模块使用结构体生成数据库表,不识别long类型

windows环境:windows10,vs2017,编译器最新,支持c17.问题描述:例如结构体:struct test_create_table{//__int64 id; //可以long id; //不可以,编译报错string name;};REFLECTION(test_create_tab…

使用Preference保存设置

Android中有四种持久化数据的方法:SQLite数据库、文件存储、Preference、ContentProvider。 四种方法各有专攻,而其中Preference是以类似Map的键值对形式存储的,最适合用来保存用户个人设置之类的信息。 可以用一个xml文件来配置一个设置界面…

c语言如何编写mysql客户端_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...

#include #include #include #include #include #include #include #include "mydb.h"void sqldb(const char *src)//参数src为要执行的SQL语句{if ((strncmp(src, "select", 6) 0) || (strncmp(src, "SELECT", 6) 0)|| (strncmp(src, "s…

调用支付jsapi缺少参数package_iOS微信支付(Swift)

前言微信支付的iOS的Demo不言而喻,所有的参数都是后台生成传过来的,完全没参考价值,并且有的注意点文档上也没说,现在我就说一下微信支付开发中需要注意的地方项目配置把实例项目中的一下文件拖到项目中Control文件夹下的WXApiManager.h和WXApiManager.m…

尚未注册 OLE DB 访问接口 SQLNCLI10 7043 错误

与链接服务器的测试连接失败。 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------程序位置: 在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTy…

asterisk 支持 VP8 video编码 实现安卓的视频通话

1 :checkout Asterisk source code revision 373330 svn checkout -r 373330 http://svn.digium.com/svn/asterisk/trunk asterisk (下载最新asterisk版本) 2 :asterisk 上面需要打一个补丁支持 VP8 video编码 wget http://sipml5.googlecode.com/svn/trunk/aste…

【Flink SQL API体验数据湖格式之paimon】

前言 随着大数据技术的普及,数据仓库的部署方式也在发生着改变,之前在部署数据仓库项目时,首先想到的是选择国外哪家公司的产品,比如:数据存储会从Oracle、SqlServer中或者Mysql中选择,ETL工具会从Informa…

ai里为什么不能随意放大缩小_AI常见问题解答

1、在AI中,有没有和CD一样的调整文字间距的快捷键呀? 答:Alt+左右方向键移动箭头。 2、在AI中,如何像快速放大缩小编辑区域? 答:按住Alt滚动鼠标滚轮。 3、在AI中,如何设置圆角矩形的圆角大小? 答:点击圆角矩形工具,用鼠标点击画布,这里可以填。 4、在AI中,如何简单…

python归一化 增大差异_Python逻辑回归模型原理及实际案例应用

前言上面我们介绍了线性回归, 岭回归, Lasso回归, 今天我们来看看另外一种模型—"逻辑回归". 虽然它有"回归"一词, 但解决的却是分类问题目录1. 逻辑回归2. 优缺点及优化问题3. 实际案例应用4. 总结正文在前面所介绍的线性回归, 岭回归和Lasso回归这三种回…

上周热点回顾(6.17-6.23)

热点随笔: 各地IT薪资待遇讨论(潇洒一回) 这些年过上幸福生活的程序员(上篇)(飞扬青云) 一个线上运营着3000人的游戏,因为我不小心一个DROP DATABASE,全没了。 怎么办…

Boost学习之指针容器--pointer_container

有时,我们可能需要一个包含指针的容器.比如存放一些不可拷贝的对象或者想在容器里存放基类以实现多态.尽管我们可以直接定义存放指针的STL容器,不过这样并不方便,我们得处处小心,在清空或删除容器里的元素时我们要保证异常安全地回收指针所指向的对象,以防内存泄漏. 一个好的办…

libzdb 连接到mysql_MySQL 连接

MySQL 连接使用mysql二进制方式连接您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。实例以下是从命令行中连接mysql服务器的简单实例:[roothost]# mysql -u root -pEnter password:******在登录成功后会出现 mysql> 命令提示窗口&#xff…

python ios 坐标点击_python点击鼠标获取坐标(Graphics)

使用Python进行图像编程,要使用到Graphics库。下面列举出较常用的代码from graphics import *#设置画布窗口名和尺寸win GraphWin(hehe, 666, 666)#关闭画布窗口win.getMouse()win.close()#画点pt Point(100, 100)pt.draw(win)#画圆cir Circle(Point(200, 200), …

C++ 11右值引用

C 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的…

mysql dml ddl优先级_MYSQL入门操作和常规DML、DDL、DQL使用

刷新权限,将某些权限从硬盘刷新到内存中(修改root密码自带隐式刷新权限操作)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)mysql>查看服务端口mysql> show variables like port;----------------------| Variable_name | Value |--------…

C语言中字符串如何转换为二进制、八进制、十进制、十六进制

在C语言某个程序当中需要把文本16进制转换成对应的16进制数&#xff0c;比如字符串"0x1a"转换成10进制的26&#xff0c;可以用以下函数来实现 相关函数: atof, atoi, atol, strtod, strtoul 表头文件: #include <stdlib.h> 定义函数: long int strtol(const…

python遍历循环中的遍历结构可以是什么_(一)Python入门-4控制语句:06for循环结构-遍历各种可迭代对象-range对象...

一&#xff1a;for循环和可迭代对象遍历for 循环通常用于可迭代对象的遍历。for 循环的语法格式如下&#xff1a;for 变量 in 可迭代对象&#xff1a;循环体语句可迭代对象&#xff1a;Python包含以下几种可迭代对象&#xff1a; 1. 序列。包含&#xff1a;字符串、列表、元组 …

C++11中的右值引用及move语义编程

C0x中加入了右值引用&#xff0c;和move函数。右值引用出现之前我们只能用const引用来关联临时对象&#xff08;右值&#xff09;&#xff08;造孽的VS可以用非const引用关联临时对象&#xff0c;请忽略VS&#xff09;&#xff0c;所以我们不能修临时对象的内容&#xff0c;右值…

IBatis 映射文件 sql 中大于、小于等符号转义

相信好多朋友在写配置文件的时候&#xff0c; 直接写 > 、<、>、< 编译不通过! 这些其实就是 xml 文体的特殊符号,在编写是需要转义&#xff0c;有两种方式处理&#xff0c;如下: 方法一 : 直接替换 <<>><><>&&amp;&apos…

python入侵数据库数据库_一个简单的Python访问Mysql数据库例子

2020/11/3操作记录搭建好Python的数据环境之后&#xff0c;接下来就是在Python代码中访问数据库我先在Navicat图形化界面创建一个数据库命名为pythontest&#xff0c;再在数据库中创建了一个表studentinfo有nid,nname,ngrade,nage四个字段&#xff0c;nid为主键递增。通过查询编…