dataframe iloc_如何使用iloc和loc 对Pandas Dataframe进行索引和切片

在这篇文章中,我们将使用iloc和loc来处理数据。更具体地说,我们将通过iloc和loc例子来学习切片和索引。

一旦我们将一个数据集加载为Pandas dataframe,我们通常希望根据某些条件开始访问该数据的特定部分。例如,如果我们的数据集包含比较不同实验组的实验结果,我们可能需要分别计算每个实验组的描述性统计。

c6b1001fdb532cd17f6af5e1470a5b3b.png
  • 更多有关对Pandas dataframes进行分组的内容

  • 如何在Python中进行描述性统计

根据某些标准选择数据的特定行和列的过程通常称为切片。

Pandas Dataframe

在我们学习如何使用loc和iloc之前,我们最好先了解一下Pandas dataframe对象是如何工作的。对于本索引和切片教程的特定目的,我们最好知道dataframe中的每个行和列都有一个数字——一个索引。

593e1e2041db691de7228e767cf2bbe4.png

这种结构是带有数字索引的行和列结构,这意味着我们可以使用行号和列号来处理数据。这在我们准备使用Pandas loc和iloc方法的时候是非常有用的。

  • 请参阅博文《使用Pandas和pyjanitor——了解一些简单的Python数据清理方法》。

Data

在下面的iloc和loc例子中,我们将使用两个数据集。这些数据集,在许多其他的RDataset中,可以在这里找到,但是下面的代码将把它们加载到Pandas dataframe中:

3c595725105c19f6bfc20e814c89387e.png

如果您有兴趣学习更多有关Pandas数据处理的知识,请查看以下文章:

  • 如何将CSV文件读入Pandas

  • 如何将Excel文件读入Pandas

  • 将SPSS文件读入Pandas

  • 使用Python和Pandas处理JSON文件

loc 和 iloc之间有什么不同?

在继续使用Pandas iloc和Pandas loc之前,我们将回答有关loc和iloc之间的区别的问题。

首先,.loc是一个基于标签的方法,而.iloc是一个基于整数的方法。这意味着当我们对dataframe进行切片时,loc将考虑索引的名称或标签。

d05125acd236c37ba73c85d57227d30f.png

Pandas loc 示例链接

例如,如果“case”在一个dataframe(例如,df)的索引中,那么df.loc['case']将导致第三行被选中。注意,在下面的loc和iloc例子中,我们将使用数据集中的第一列作为索引(参见第一个代码块)。

b2c902875fb854cd44b4364b6fecf291.png

另一方面,Pandas .iloc会根据索引的位置进行切片。与.loc不同,.iloc的行为类似于常规的Python切片。也就是说,我们只需要指定位置索引数字,就会得到我们想要的切片。

例如,df.iloc[2]会为我们提供dataframe的第三行。这是因为,就像在Python中一样,.iloc是基于0位置的,也就是说,它从0开始。我们将在下面的文章中学习如何使用loc和iloc。

iloc在Pandas中能做什么?

如前所述,Pandas iloc主要基于整数位置。也就是说,可以使用0到长度-1来对一个dataframe建立索引,无论它是行索引还是列索引。

此外,正如我们将在后面的Pandas iloc 例子中所看到的,该方法也可以与一个布尔数组一起使用。

7e478b9965b7abbcf8d3e50528759841.png

在这个Pandas iloc教程中,我们将使用以下输入方法:

  • 一个整数,例如2

  • 一个整数列表,例如 [7, 2, 0]

  • 一个带有整数的切片对象,例如0:7, 如上图所示

  • 一个布尔型数组。

如何使用Pandas iloc

现在您可能想知道“如何使用iloc?”,当然,我们会回答这个问题。以最简单的形式,我们只需在括号中键入一个整数。

71de303aa4f531b5e6c8829b38df39cd.pngabc649460befff2730ccc1411af781e0.png

正如您在上面的Pandas iloc例子中所看到的,我们在iloc方法之后键入了一组方括号。

此外,我们还添加了一个整数(0)作为索引值,以指明我们想要获取我们的dataframe的第一行。注意,在使用.iloc时,一定要知道方括号内索引的顺序显然很重要。

第一个索引号将是我们要检索的行。如果我们要检索一个特定的列,或者某些特定的列,使用iloc,我们会输入第二个索引(或多个索引)。但是,这是可选的,并且没有第二个索引时,iloc将默认检索所有列。

如前所述,Pandas iloc语法是: DataFrame.iloc[,]。

0198a3089b979a9c4ab34aaa395009e0.png

这可能会让R统计编程环境的用户感到困惑。要进行迭代,我们可以使用Pandas中的iloc方法来以行和列在dataframe中出现的顺序按数字选择它们。

>>> 今日签到口令:ipd5 <<<

Pandas iloc 例子

在下一节中,我们将通过查看如何使用iloc的不同例子来继续这个Pandas 索引和切片教程。当然,我们已经从最基本的方法开始了;即选择单个行:

fef03392a6e24b77c7464a91679fc51f.png

索引一个Pandas dataframe的最后一行

在下一个例子中,我们将继续使用一个整数来索引dataframe。然而,如果我们想要检索一个Pandas dataframe的最后一行,我们使用“-1”:

19e0b9d18b17751122781466907bf799.png

当我们使用iloc时,我们还可以输入一个只有一个索引整数的列表。这将会索引一行,但输出将不同于上面的例子:

cf0fcc4edccb4e16aacf76df4557e23c.png74f16c2d64e67d7ffd933f3f5e5a5a21.png

使用iloc选择多行

当然,我们也可以使用iloc从一个pandas dataframe中选择很多行。例如,如果我们向列表中添加更多的索引整数,就像上面的例子一样,我们就可以选择很多行。

4278a563b33496fd3f93da89ac47a885.png

在Pandas中使用iloc对行进行切片

在下一个Pandas iloc例子中,我们将学习有关切片的知识。注意,稍后我们将进一步熟悉使用切片字符“:”。要选择第11行到第15行,我们只需输入以下代码:

7e677f540c606da926936e29f4fd05d3.png

使用Pandas iloc选择列

如前所述,当然,在使用iloc方法中的第二个参数时,我们也可以选择或切片列。在下一个iloc例子中,我们可能希望只检索dataframe中的第一列,即索引位置为0的列。

为此,我们将在使用iloc时在括号内的第二个位置使用一个整型索引值。注意,第二个位置的整数索引指定了我们要检索的列。那行是怎样呢?

daab5557fac7e78aa57c22dcd4d4fdc1.png

注意,当我们想使用iloc选择所有行和一列(或多个列)时,我们需要使用“:”字符。

9d47c28f6c6600fcf3e6d09de40bf2a2.png

在上面的 Pandas iloc例子中,我们在括号内的第一个位置使用了“:”字符。这表明我们想要检索所有的行。提醒一下,内的第一个索引位置用来指定行,并且我们使用了“:”字符,因为我们希望从一个Pandas dataframe获取所有行。

在下一个关于如何使用Pandas iloc的例子中,我们将获取一个一些列和所有行的切片。这可以用与上面类似的方法来完成。然而,我们使用了一个Python切片来获取所有行和前6列,而不是使用一个整数:

766cd5e36fb5e37f4173c98f1e746377.png

使用iloc选择一个特定的单元格

在Pandas iloc教程的这一节中,我们将学习如何选择一个特定的单元格。

当然,这非常简单,我们只需要对我们希望从dataframe中获取的行和列使用一个整型索引值即可。例如,如果我们要选择第0行和第0列中的数据,我们只需键入df1.iloc[0, 0]。

c780c08465d987a29e86cd6c40a86127.png

当然,我们也可以选择多行和/或多列。为此,我们只需添加一个包含我们希望iloc为我们选择的整数索引的列表。

例如,如果我们想要选择第4行和第2、3、4列中的数据,我们只需使用以下代码:

5d28f7ffb5b1d7c1caad75e047c58d02.png

检索单元格的子集

在下一个iloc例子中,我们将从来自dataframe的单元格中获取一个子集。

要实现这一点,我们需要组合使用iloc获取一个列切片和一个行切片:

95c8af89c9fb0f3f91a269243a895ca8.png

使用布尔掩码选择列

在最后一个例子中,我们将使用一个布尔掩码来选择列。要这样做,我们当然需要知道有多少列,以及我们想要选择哪些列。

bde03c2a1c120b0cee40ca8d60443315.png

如何使用Pandas loc

在本节中,我们将介绍另一个Pandas方法,即用于从dataframe中选择数据的loc。

8bad621eeecc2db49d73b3cbdb2c8e83.png

何时使用loc?

记住,iloc使用位置引用作为参数输入,而loc使用索引作为参数。由于loc接受索引,我们可以传递字符串(例如列名)作为一个参数,而如果我们在iloc中使用字符串时,它会抛出一个错误。因此,什么时候使用Pandas loc呢?答案就是当我们知道了索引名时。

在本loc教程中,我们将使用以下输入:

  • 单个标签,例如2或' b '。

    值得注意的是,Pandas会将2解释为一个索引的标签,而不是索引上的整数位置(与iloc相反)

  • 一个标签列表,例如[‘a’, ‘b’, c’]

  • 一个带有标签的切片对象,例如‘shortname’:’SASname’。重要的是,当涉及到切片时,当我们使用loc时,开始和停止位置都包括在内

使用Pandas loc选择一行

在第一个Pandas loc例子中,我们将从索引为1的行中选择数据。

8a5818edd07ad2fe9f6b597c0cb6cfde.png

注意,在上面的例子中,第一行的名称为“1”。也就是说,这个“1”不是索引整数,而是该行的名字。

Pandas loc的行为方式与iloc相同,我们单个行作为series进行检索。与使用Pandas iloc一样,我们可以更改输出,以便以一个 dataframe来获取单个行。我们通过在一个列表中放入行名来做到这一点:

cf21a6a8aae79c40ebf1884a6b22967b.png

使用loc对行进行切片

在下一个代码例子中,我们将使用行名称来获取一个行切片。

1079d0ab403817822c457bba27b7ea81.png

我们还可以将一个索引列表传递给它,以选择所需的索引。

ea2f10b571ef2af6a80b78e3702c20e2.png

使用loc通过列名进行选择

与Pandas iloc不同,loc则进一步采用列名作为列参数。这意味着我们可以给它传递一个列名来从该列中选择数据。

在下一个loc例子中,我们将从' SASname '列中选择所有数据。

7b14d3d0bfb1fd01a1463f1dd71daced.png

当然,另一个选项是在使用loc时将多个列名传入一个列表中。在下一个例子中,我们将从“SASname”和“longname”列中选择数据,其中行名是从1到5。

84b31d389b1b3d68f6213b07a6dc1ab6.png

在Pandas中使用loc进行切片

在本节中,我们将会看到如何使用loc对一个Pandas dataframe进行切片。记住,“:”字符是在切片时使用的。与iloc一样,我们也可以进行切片,只不过这里我们可以使用列名和行名(如下面的例子所示)。

在下面的loc例子中,我们再次使用了第一个dataframe(即df1),对前5行切片,并获取从“Film”列到“EA1”列的所有列。

fda94f78a61dcd9b8e5b3030b640ee8f.png

Pandas iloc 和条件

很多时候,我们想要通过使用布尔数组来索引一个Pandas dataframe。也就是说,我们可能希望根据某些条件来选择数据。当然,这很容易用Pandas loc来实现。我们只需要向.loc方法传递一个包含真/假值的数组或Seris。

例如,如果我们想要选择Study列中值为“flat”的所有行,我们将按照以下步骤来创建一个Pandas Series,其中的dataframe中的每一行都有一个真值,其中存在“flat”。

ef97d075c571fcb075640c88f8d152ea.png

使用多条件Pandas iloc选择行

此外,有时我们可能希望基于多个条件进行选择。例如,如果我们想要选择Study列是“flat”并且neur列大于18的所有行,我们可以按下一个例子来做:

b07db70bf8bec30c5efe62e26b5f2720.png

与前面一样,我们可以使用第二个参数从dataframe中选择特定的列。请记住,在使用Pandas loc时,列是通过名称被loc索引器引用的,我们可以使用一个单个字符串、一个列的列表或一个切片“:”操作。在下一个例子中,我们将选择从EA1到NA2的列:

3b0b3db120059b3e8bc08825ece10973.png

使用 .loc设置dataframe中的值

在本loc和iloc教程的最后一节中,我们将学习如何使用loc对dataframe设置值。

对一个dataframe设置值是非常简单的,我们需要做的只是稍微更改一下语法,并且我们实际上可以在使用.loc 索引器选择和筛选的同一语句中来更新数据。这很方便,因为我们可以根据不同的条件来更新列中的值。

在最后一个loc例子中,我们将创建一个新列(NewCol),并在neur大于18的行中添加单词“BIG”:

5c8c77bc5a43f0bdcd361e8821a99350.png

结论

在这个Pandas iloc和loc教程中,我们学习了使用loc和iloc方法建立索引、选择数据和选取子集。更具体地说,我们已经了解了这些方法是如何工作的。当谈到loc时,我们已经学习了如何根据条件语句(例如,大于或等于)去选择数据,以及如何使用loc去设置值。

英文原文:https://www.marsja.se/how-to-use-iloc-and-loc-for-indexing-and-slicing-pandas-dataframes/
译者:测试

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

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

相关文章

Flink 和 Iceberg 如何解决数据入湖面临的挑战

简介&#xff1a; 4.17 上海站 Meetup 胡争老师分享内容&#xff1a;数据入湖的挑战有哪些&#xff0c;以及如何用 Flink Iceberg 解决此类问题。 一、数据入湖的核心挑战 数据实时入湖可以分成三个部分&#xff0c;分别是数据源、数据管道和数据湖&#xff08;数仓&#xf…

高并发下的 HashMap 为什么会死循环

作者 | tech-bus.七十一来源 | 程序员巴士前言HashMap并发情况下产生的死循环问题在JDK 1.7及之前版本是存在的&#xff0c;JDK 1.8 通过增加loHead头节点和loTail尾节点进行了修复&#xff0c;虽然进行了修复&#xff0c;但是如果涉及到并发情况下需要使用hash表&#xff0c;建…

唯品会:在 Flink 容器化与平台化上的建设实践

简介&#xff1a; 唯品会 Flink 的容器化实践应用&#xff0c;Flink SQL 平台化建设&#xff0c;以及在实时数仓和实验平台上的应用案例。 转自dbaplus社群公众号 作者&#xff1a;王康&#xff0c;唯品会数据平台高级开发工程师 自 2017 年起&#xff0c;为保障内部业务在平…

python怎么变成exe_Python怎样打包成exe?

分类&#xff1a;Python &#xff5c; 作者&#xff1a;凹凸曼 &#xff5c; 发表于2011/03/01Python怎样打包成exe&#xff1f;已关闭评论 发现PyInstaller 是个不错的东东&#xff0c;解决打包单个exe的问题&#xff0c;使用非常简单&#xff0c;不用编写setup脚本&#xff1…

PolarDB-X 2.0:使用一个透明的分布式数据库是一种什么体验

简介&#xff1a; 透明分布式&#xff0c;是PolarDB-X即将发布的能力&#xff0c;它能让应用在使用PolarDB-X的过程中&#xff0c;犹如使用单机数据库一般的体验。与传统的中间件类型的“分布式数据库”相比&#xff0c;有了透明分布式能力的PolarDB-X&#xff0c;不再需要应用…

Chrome 96 又更新了 5 个巨巨巨好用的功能

作者 | 零一来源 | 前端印象‍‍‍‍‍‍‍大家好&#xff0c;收到了 Chrome 96 版本的更新推送&#xff0c;简单看了一下&#xff0c;还是更新了几个挺有趣的东西的&#xff0c;一起来看看到底都有啥~先下载 Chrome Beta 版本才能体验 Chrome 96 哈Chrome Beta我们顺便来给每个…

编译优化 | LLVM代码生成技术详解及在数据库中的应用

简介&#xff1a; 作者&#xff1a;长别 1. 前言 随着IT基础设施的发展&#xff0c;现代的数据处理系统需要处理更多的数据、支持更为复杂的算法。数据量的增长和算法的复杂化&#xff0c;为数据分析系统带来了严峻的性能挑战。近年来&#xff0c;我们可以在数据库、大数据系…

低代码发展专访系列之二:两三年内会出现“现象级”低代码产品吗?

前言&#xff1a;2019年开始&#xff0c;低代码爆火。有人认为它是第四代编程语言&#xff0c;有人认为它是开发模式的颠覆&#xff0c;也有人认为是企业管理模式的变革……有很多声音&#xff0c;社区讨论很热烈。CSDN 随后展开低代码平台产品系列活动&#xff0c;包括低代码开…

为什么Spring仍然会是云原生时代最佳平台之一?

简介&#xff1a; 基于Java语言的Spring生态&#xff0c;还能否适应新的开发方式&#xff0c;比如Cloud Native、Serverless、Faas等&#xff0c;它还会是云原生时代的最佳平台的选择吗&#xff1f;本文将从5个角度来为你分析一下这个问题&#xff0c;分别是&#xff1a;Java和…

贾又福大象鸿蒙,奏乐!继续吹!库里又创记录,射进MVP榜单,众多名记变“库吹“...

库里本月已投进85记三分 打破哈登保持的NBA单月三分命中数纪录加上今天的7记三分&#xff0c;库里本月已经投进85记三分&#xff0c;创造了新的NBA单月(自然月)三分命中数纪录。勇士本月还有两场比赛。此前&#xff0c;哈登曾单月82记三分。在NBA历史单月三分球命中数前三榜单中…

opencv4 图像特征匹配_概述 | 全景图像拼接技术全解析

点击上方蓝字关注我们微信公众号&#xff1a;OpenCV学堂关注获取更多计算机视觉与深度学习知识前言图像/视频拼接的主要目的是为了解决相机视野(FOV-Field Of View)限制&#xff0c;生成更宽的FOV图像/视频场景。视频拼接在体育直播、全景显示、数字娱乐、视频处理中都被广泛应…

数字化让618有了洞悉消费者内心的“大脑”

简介&#xff1a; 阿里云数据中台已形成包括会员智能运营、全域天攻智投、GMV策略模拟等在内的近10套解决方案&#xff0c;围绕“人”“货”“场”三大零售行业要素&#xff0c;逐个击破品牌业务难点&#xff0c;记者了解到&#xff0c;过去一年&#xff0c;悦诗风吟、Benefit、…

赋能工业互联网融合发展 | 北京信息化和工业化融合服务联盟平台化设计专业委员会、中国仿真学会CAE仿真专业委员会成立

11月28日&#xff0c;由北京市经济和信息化局指导&#xff0c;北京信息化和工业化融合服务联盟与中国仿真学会共同主办&#xff0c;联盟平台化设计专业委员会、中国仿真学会CAE仿真专业委员会、国家数字化设计与制造创新中心北京中心、北京数字化设计与制造产业创新中心共同承办…

升级鸿蒙系统有没有翻车,被寄予厚望的华为鸿蒙系统,这次要翻车?原来并不是我们想的那样...

华为鸿蒙系统早在去年就已经被正式发布&#xff0c;但那时的人们对这个操作系统还不熟悉。但近期华为又在其发布会上发布了鸿蒙OS2.0&#xff0c;并表示到了2021年华为手机将全面使用鸿蒙2.0。这消息一出&#xff0c;不少华为用户忍不住想去尝尝鲜&#xff0c;纷纷都将系统更新…

PolarDB-X 2.0 全局 Binlog 和备份恢复能力解读

简介&#xff1a; PolarDB-X 2.0 针对数据孤岛问题提供了全局 Binlog 能力&#xff0c;该能力为下游生态提供了与 MySQL Binlog 完全一致的增量日志消费体验。针对数据损坏问题提供了实例级、表级、SQL 级和行级等不同粒度的数据恢复能力&#xff0c;包括一致性备份恢复、表回收…

友盟+《小程序用户增长白皮书》:从五个角度入手分析小程序数据

简介&#xff1a; 近日&#xff0c;国内领先的全域数据智能服务商——友盟&#xff0c;发布了《友盟U-APM 移动应用性能体验报告》。据悉&#xff0c;友盟于去年将原移动分析U-App错误分析模块正式升级为U-APM应用性能监控平台&#xff0c;经过近一年的观察&#xff0c;通过DEM…

html提现页面模板,提现记录.html

&#xfeff;提现记录$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.html; };…

有赞九周年,打造技术生态,与开发者一起投身新零售浪潮

编辑 | 宋慧 11月28日&#xff0c;在有赞九周年生态大会有赞云分会场上&#xff0c;有赞宣布全面升级“ONE战略”&#xff0c;将与生态内众多的品牌商、软件厂商&#xff0c;从“产品融合”&#xff0c;“销售联动”&#xff0c;“经验共享”和“资本合作”四个维度实一起共建“…

“控本焦虑”的工程企业 用钉钉宜搭找到了低成本数字化的“捷径”

简介&#xff1a; 上海致拓软件有限公司利用云钉低代码应用构建平台——钉钉宜搭为合安建筑快速、低成本地搭建了个性化的项目管理系统&#xff0c;着力帮助合安建筑解决业务在线场景&#xff0c;形成场景化的工程项目管理数字化解决方案。 一封由工程公司发给项目管理数字化实…

如何做好一场技术演讲?

简介&#xff1a; 据心理学调查&#xff0c;在人们感到最恐惧的事情里&#xff0c;死亡排名第二&#xff0c;而“公开演讲”排名第一&#xff01;那么作为一个演讲新人&#xff0c;为了可以不丢人的做好演讲&#xff0c;都需要做哪些准备呢&#xff1f; 作者 | 竹涧 来源 | 阿里…