pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
发布日期:2022-03-11 15:03:41 浏览次数:7 分类:技术文章

本文共 2934 字,大约阅读时间需要 9 分钟。

数据介绍

先随机生成一组数据:

import pandas as pdimport numpy as npstate = ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada']year = [2000, 2001, 2002, 2003, 2004]pop = [1.3, 1.4, 1.6, 4.5, 2.7]frame = pd.DataFrame({'state': state, 'year': year, 'pop': pop})print(frame)

 结果:

pop   state  year0  1.3    Ohio  20001  1.4    Ohio  20012  1.6    Ohio  20023  4.5  Nevada  20034  2.7  Nevada  2004

1. []切片方法

# 行选择print(frame[1:3])# 列选择print(frame[['year', 'pop']])# 区块选择print(frame[:3][['state', 'year']])

 结果:

pop state  year1  1.4  Ohio  20012  1.6  Ohio  2002    year  pop0  2000  1.31  2001  1.42  2002  1.63  2003  4.54  2004  2.7   state  year0  Ohio  20001  Ohio  20012  Ohio  2002

2.loc(按照索引来进行行列选择)

# 行选择print(frame.loc[1:3])# 区块选择print(frame.loc[1:3, ['year', 'pop']])

 结果:

pop   state  year1  1.4    Ohio  20012  1.6    Ohio  20023  4.5  Nevada  2003    year  pop1  2001  1.42  2002  1.63  2003  4.5

 注意:loc与[]的不同之处在于会把3也选择进去,而使用[]是不包含的。

In [15]: data_fecha.head()Out[15]:             rnd_1  rnd_2  rnd_3fecha                          2012-04-10      8     17     122012-04-11      1     16      32012-04-12      7      6      12012-04-13      2     16      72012-04-14      4     17      7In [16]: # 生成两个特定日期    ...: fecha_1 = dt.datetime(2013, 4, 14)    ...: fecha_2 = dt.datetime(2013, 4, 18)    ...:     ...: # 生成切片数据    ...: data_fecha.loc[fecha_1: fecha_2]Out[16]:             rnd_1  rnd_2  rnd_3fecha                          2013-04-14     17     10      52013-04-15     14      4      92013-04-16      1      2     182013-04-17      9     15      12013-04-18     16      7     17

 建议:使用loc而尽量少使用[],因为loc在对DataFrame进行重新赋值操作时会避免chained indexing问题,使用[]时编译器很可能会给出SettingWithCopy的警告。

3.iloc

如果说loc是按照索引(index)的值来选取的话,那么iloc就是按照索引的位置来进行选取。iloc不关心索引的具体值是多少,只关心位置是多少,所以使用iloc时方括号中只能使用数值。

# 行选择print(frame.iloc[1:3])# 列选择print(frame.iloc[:, [1, 2]])# 区块选择print(frame.iloc[[1, 3, 4], [0, 2]])

 结果:

pop state  year1  1.4  Ohio  20012  1.6  Ohio  2002     state  year0    Ohio  20001    Ohio  20012    Ohio  20023  Nevada  20034  Nevada  2004    pop  year1  1.4  20013  4.5  20034  2.7  2004

 

4.at

at的使用方法与loc类似,但是比loc有更快的访问数据的速度,而且只能访问单个元素,不能访问多个元素。

import time start = time.clock()frame.at[1,'year']Out[8]: 2001end = time.clock()end - startOut[11]: 30.75638200200791 start = time.clock()frame.loc[1,'year']Out[13]: 2001end = time.clock()end - startOut[15]: 29.014473024534

 

5.iat

iat对于iloc的关系就像at对于loc的关系,是一种更快的基于索引位置的选择方法,同at一样只能访问单个元素。

In [15]:frame.iat[1,2]Out[16]: 2001

 

6.ix

以上几种方法都要求查询的秩在索引中,或者位置不超过长度范围,而ix允许你得到不在DataFrame索引中的数据。

In [28]: date_1 = dt.datetime(2013, 1, 10, 8, 30)    ...: date_2 = dt.datetime(2013, 1, 13, 4, 20)    ...:     ...: # 生成切片数据    ...: data_fecha.ix[date_1: date_2]Out[28]:             rnd_1  rnd_2  rnd_3fecha                          2013-01-11     19     17     192013-01-12     10      9     172013-01-13     15      3     10

 2013年1月10号并没有被选择进去,因为这个时间点被看作为0点0分,比8点30分要早一些。

转载于:https://www.cnblogs.com/mlan/p/8192256.html

转载地址:https://blog.csdn.net/weixin_30267785/article/details/99208154 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【bzoj2330】[SCOI2011]糖果 差分约束系统
下一篇:POJO详解

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年02月29日 13时54分06秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Java前台显示近20天的东西_第十次课:前台首页设计及显示商品信息 2019-04-21
java开发web网站的路由设计_理解Web路由(浅谈前后端路由与前后端渲染) 2019-04-21
excel如何把顺序倒过来_在excel中怎么使文字颠倒顺序反过来显示呢? 2019-04-21
php正则表达式获取图片路径,php 常用正则表达式实例(图片地址,与指定内容获取)... 2019-04-21
脚本语言php是什么意思,PHP脚本语言 2019-04-21
matlab数学规划模型,数学规划模型 2019-04-21
视频提取音频php,如何提取视频中的音频,从视频文件中提取出音频输出成MP3格式... 2019-04-21
diy.php添加验证码,织梦dedecms自定义表单中加入验证码 2019-04-21
在php脚本中 通过可以获取,在PHP中,可以使用Unix时间戳获取精确的脚本执行时间。... 2019-04-21
s2-045 php exp,S2-045-EXP.py --Struts2任意代码执行漏洞 (S2-045,CVE-2017-5638) 2019-04-21
linux sdk 窗口句柄,Venus: 针对Linux平台上,对常用的系统API进行面向对象的封装SDK。... 2019-04-21
c语言程序设计 科学出版社习题答案,C语言程序设计(科学出版社)第4章 课后习题参考答案.doc... 2019-04-21
c语言 无错 但只运行一半,求哈夫曼编码时程序运行到一半就终止了,编译无错... 2019-04-21
deepin linux 2014安装,2014.2版本的Deepin虚拟机安装浅谈(就是深度Linux) 2019-04-21
android 限速工具,Android下载器之限速篇 2019-04-21
html刷新ajax实现原理,AJAX的原理—如何做到异步和局部刷新 2019-04-21
html中列表菜单加文字请选择,html中下拉菜单 2019-04-21
读书郎平板中android,读书郎学生平板电脑怎么用 使用方法详解【图文】 2019-04-21
html5 调用摄像头 支持IE,JS调用本地摄像头拍照(兼容各大浏览器及IE8+) 2019-04-21
rust和gta5哪个吃配置_盘点4款Steam“自由度”很高的游戏,GTA5众所周知,目前最热门... 2019-04-21