pandas DataFrame的增删查改总结系列文章:

在操作DataFrame时,肯定会经常用到loc,iloc,at等函数,各个函数看起来差不多,但是还是有很多区别的,我们一起来看下吧。

首先,还是列出一个我们用的DataFrame,注意index一列,如下:

接下来,介绍下各个函数的用法:

1、loc函数

愿意看官方文档的,请戳这里,这里一般最权威。

loc函数是基于“标签”选择数据的,但是也可以接受一个boolean的array,对于每个用法,我们从参数方面来一一举例:

1.1 单个label

接受一个“标签”(label)参数,返回一个Series,例如下面这个例子收一个标签,返回通过这个标签定位的行的值,注意这里是通过标签定位,而不是通过中括号中的数字定位第几行,之后我们通过对比iloc函数时还会细说。

test_dict_df.loc[1] #return the row with name 'Bob'
test_dict_df.loc[7] #return the row with name 'Time' important!!!
# type(test_dict_df.loc[1]) #pandas.core.series.Series

1.2 一个label的array

如果键入一个标签的array,那么就返回一个对应的DataFrame:

test_dict_df.loc[[1,2,4]]

结果如下:

1.3 加入一个切片array

test_dict_df.loc[[1:4]]

结果如下:

1.4 行标签,列标签

通过在中括号中加入行标签和列标签来定位一个cell,相当于坐标的定位:

test_dict_df.loc[1,'english']  #result:94

1.5 行标签或者列标签是切片array

test_dict_df.loc[1:4,'english']
# test_dict_df.loc[1:4,'english':'math']

1.6 还可以接受条件,进行选择

例如我们选择英语成绩超过90的所有行:

test_dict_df.loc[test_dict_df['english']>90]

当然,也可以再条件选择后,再加入列选择,列选择的时候可以单列,也可以是切片数组,通过上面的介绍这里就可以灵活处理:

test_dict_df.loc[test_dict_df['english']>90,'english'] #single label
test_dict_df.loc[test_dict_df['english']>90,'english':'name'] #slice array
test_dict_df.loc[test_dict_df['english']>90,['english','name']] #label array

1.7 接受一个boolean的array

可以接受一个boolean的array,相当于按照这个表的真假按照位置的顺序选择值

test_dict_df.loc[[True,False,False,True]]

loc还有很多用法,这里先介绍到这里吧,当然如果你的DataFrame是复合的行或者复合列,写法也是不同的,具体就可以查阅官方文档了!

2、iloc函数

官方文档戳这里

iloc函数与loc函数不同的是,它接受的是一个数字,代表着要选择数据的位置:

test_dict_df.iloc[6]

这代表我们选择的是第6行,而不是index为6的那一行。当然,也可以接受一个boolean的array,相当于按照这个表的真假按照位置的顺序选择值:

test_dict_df.iloc[[True,False,False,True]]

这里iloc也可以接受切片array:

# test_dict_df.iloc[1:2]
test_dict_df.iloc[[1,2,4]]

3、ix函数(0.20.0版本后已经弃用)

ix就是一种混合索引,字符串的标签和证书的数据索引都可以作为合法输入,其实相当于loc和iloc的一个混合方法:

test_dict_df.ix['Alice']
test_dict_df.ix[1]

上述两种方法都能得到值,这里我们就不追究这个函数具体是怎样的检索顺序或者工作原理了。因为官方给出的是从pandas0.20.0之后,ix函数已经被弃用。其实在使用的时候,ix函数虽然方便,但是的确有时候会显得比较混乱,所以我们之后也尽量少用这个函数吧,还是按照官方大佬的指导。

4、at函数

at是用来选择单个值的,此时用法类似于loc:

test_dict_df.at[1,'english']
test_dict_df.loc[1,'english']

以上两种方法都能选择到,label为1,列为'english'的那个值,但是据说at速度要快,这点我没有考证过。

5、iat函数

iat函数相对于at函数,就相当于iloc相对于loc函数。iat也只能选择一个值。只不过是用索引位置来选择,注意:行列都是索引位置来选择,从0开始数。

# test_dict_df.iat[1,'english'] #error!!!
test_dict_df.iat[2,2] #right!!!

6、概括一下

最后我们概括一下:

1、 loc和iloc函数都是用来选择某行的,iloc与loc的不同是:iloc是按照行索引所在的位置来选取数据,参数只能是整数。而loc是按照索引名称来选取数据,参数类型依索引类型而定;

2、 at和iat函数是只能选择某个位置的值,iat是按照行索引和列索引的位置来选取数据的。而at是按照行索引和列索引来选取数据;

3、 loc和iloc函数的功能包含at和iat函数的功能。

相应的代码连接:github代码

先写到这里,如有新的再补充。

pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)的更多相关文章

  1. pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)

    数据介绍 先随机生成一组数据: import pandas as pd import numpy as np state = ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'N ...

  2. pandas DataFrame的修改方法

    pandas DataFrame的增删查改总结系列文章: pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pand ...

  3. pandas DataFrame的创建方法

    pandas DataFrame的增删查改总结系列文章: pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pand ...

  4. 把pandas dataframe转为list方法

    把pandas dataframe转为list方法 先用numpy的 array() 转为ndarray类型,再用tolist()函数转为list

  5. pandas 选取数据 修改数据 loc iloc []

    pandas选取数据可以通过 loc iloc  [] 来选取 使用loc选取某几列: user_fans_df = sample_data.loc[:,['uid','fans_count']] 使 ...

  6. pandas.DataFrame的groupby()方法的基本使用

    pandas.DataFrame的groupby()方法是一个特别常用和有用的方法.让我们快速掌握groupby()方法的基础使用,从此数据分析又多一法宝. 首先导入package: import p ...

  7. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  8. pandas.DataFrame 中save方法

    In [5]: frame.save('frame_pickle') ----------------------------------------------------------------- ...

  9. Pandas:DataFrame数据选择方法(索引)

    #首先创建我们的Series对象,然后合并到dataframe对象里面去 import pandas as pd import numpy as np area=pd.Series({,,,}) po ...

随机推荐

  1. 使用hbuilder编辑器实现移动app打包

    作为一枚web前端来讲,需要了解的东西太多,需要学习的也太多了,那天因为公司需求,就研究了下移动网站打包成app的方法,这种东西好像是H5出来后就有推出的,因为性功能不行,就没怎么关注,但现在移动互联 ...

  2. C语言回顾-二维数组

    1.二维数组:是一个特殊的一维数组 完全初始化: 1)int a[2][3]={{1,2,3},{2,3,4}}; 2)连续赋值int a[2][3]={1,2,3,2,3,4}; 3)可以省略第一维 ...

  3. windows下安装openssh服务并实现远程登录

    需要准备的工具: winscp 点击下载        openssh 点击下载  步骤: 在远程计算机安装 1.首先安装openssh,双击并安装 2.指定用户的home directory为C:\ ...

  4. Microsoft Word 的键盘快捷方式

    Microsoft Word 的键盘快捷方式 全部显示 全部隐藏 本帮助文章中描述的键盘快捷方式适用于美式键盘布局.其他键盘布局的键可能与美式键盘上的键 不完全对应. 注释   本文不介绍如何为宏或自 ...

  5. Oracle存储过程中不支持DML语言的解决方法(针对遇见的DROP关键字)

    ---存储过程中的原语句: ---删除表 DROP TABLE A_NEWTDDATA; --报错 经查询:存储过程不支持DML语言: 解决方法: execute immediate 'DROP TA ...

  6. python之内置函数(二)与匿名函数、递归函数初识

    一.内置函数(二)1.和数据结构相关(24)列表和元祖(2)list:将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素).tuple:将一个可迭代对象转化成元组(如果是字典,默认将k ...

  7. Thrift源码学习二——Server层

    Thrift 提供了如图五种模式:TSimpleServer.TNonblockingServer.THsHaServer.TThreadPoolServer.TThreadSelectorServe ...

  8. nginx --反向代理配置文件

    配置文件如下图   server { listen 8080; server_name 0.0.0.0;//这里可以配置相应域名 root /www/facei; index index.html i ...

  9. 剑指offer--26.顺时针打印矩阵

    1,2,3,45,6,7,88,10,11,1213,14,15,16 每次输出第一行,然后删除第一行,逆时针旋转剩下的矩阵. ------------------------------------ ...

  10. 深、浅copy

    深.浅copy多用于列表 浅copy:第一层中不变的数据是独立的,可变类型元素指向同一块内存地址 l1 = [1,2,3,["a","b"]] l2 = l1. ...