pandas中的loc和iloc

news2024/9/21 14:54:04

loc和iloc的比较

.loc.iloc 是 pandas 提供的两种不同的索引方法,它们的主要区别在于索引数据的依据:

  1. .loc
    • 基于标签的索引,使用 DataFrame 或 Series 的索引标签(即行名和列名)来获取数据。
    • 可以使用单个标签、标签列表、标签切片、布尔数组或者 callable 函数作为索引器。
    • 如果使用标签索引并且标签不存在,.loc 会抛出一个 KeyError
    • 对于切片,包括两端的标签。
  2. .iloc
    • 基于位置的索引,使用 DataFrame 或 Series 的整数索引位置来获取数据。
    • 可以使用单个整数、整数列表、整数切片、布尔数组或者 callable 函数作为索引器。
    • 如果使用整数索引并且位置超出范围,.iloc 会抛出一个 IndexError,但切片索引器允许超出范围的索引。
    • 对于切片,不包括结束位置的索引,这与 Python 的列表切片行为一致。
      简而言之,.loc 用于根据数据的实际标签(名称)进行索引,而 .iloc 用于根据数据的实际位置(整数索引)进行索引。选择哪一种方法取决于您是否知道数据的标签,或者是否需要按照数据的实际位置进行操作。

示例

下面为 .loc.iloc 提供一个例子,以说明它们在 DataFrame 中的使用。

.loc 示例

假设我们有一个 DataFrame,其中包含了某些水果的库存信息,包括它们的种类和数量。DataFrame 的索引是水果的名称,列是 ‘库存数量’。

import pandas as pd
# 创建一个示例 DataFrame
data = {'库存数量': [10, 20, 30, 40]}
df = pd.DataFrame(data, index=['苹果', '香蕉', '樱桃', '梨'])

现在,如果我们想要选择所有库存数量大于 20 的水果,我们可以使用 .loc 和一个布尔数组:

# 使用布尔索引选择库存数量大于 20 的行
selected_fruits = df.loc[df['库存数量'] > 20]
print(selected_fruits)

输出将是:

     库存数量
樱桃     30
梨       40

.iloc 示例

使用同一个 DataFrame,如果我们想要选择前两个水果的库存数量,我们可以使用 .iloc 和一个整数列表:

# 使用整数索引选择前两个行的数据
first_two_fruits = df.iloc[[0, 1]]
print(first_two_fruits)

输出将是:

     库存数量
苹果     10
香蕉     20

或者,如果我们想要选择前两个水果的库存数量,也可以使用切片:

# 使用切片选择前两个行的数据
first_two_fruits = df.iloc[0:2]
print(first_two_fruits)

输出将是:

     库存数量
苹果     10
香蕉     20

请注意,在 .iloc 中使用切片时,结束索引是不包含的,这与 Python 的列表切片和 .loc 的行为不同。


两个结合起来使用:
在这里插入图片描述

需要注意的一些问题

在使用 .loc.iloc 进行数据索引时,有些常见的错误需要避免,以确保正确地获取数据。以下是一些需要注意的问题:

  1. 使用错误的索引方法
    • 使用 .loc 时使用整数索引,而不是标签索引。
    • 使用 .iloc 时使用标签,而不是整数位置索引。
  2. 索引超出范围
    • 使用 .iloc 时,提供的整数索引超出 DataFrame 或 Series 的范围。
    • 使用 .loc 时,提供的标签不存在于 DataFrame 或 Series 的索引中。
  3. 切片包含性误解
    • 对于 .loc,切片包括两端的标签,而对于 .iloc,切片不包括结束位置的索引。混淆这一点可能导致意外的结果。
  4. 布尔索引的错误使用
    • .loc.iloc 中使用布尔索引时,错误地将条件表达式写错,导致选择错误的数据行。
  5. 对多级索引(MultiIndex)的不正确处理
    • 当 DataFrame 有多级索引时,没有正确地使用元组来指定各级索引,导致选择错误的数据。
  6. 使用 = 赋值而不是 == 进行比较
    • 在布尔索引时,错误地使用 = 进行赋值操作,而不是 == 进行比较。
  7. callable 索引器的错误使用
    • 使用 callable 作为索引器时,返回的索引不正确或者与 DataFrame 的形状不匹配。
  8. 在链式索引中不使用括号
    • 当进行链式索引操作时(即连续使用 .loc.iloc),没有使用括号将索引操作括起来,可能会导致解析错误。
  9. NoneNaN 的混淆
    • 在布尔索引中,错误地将 NoneNaN 混淆,这可能会导致意外的过滤结果。

为了避免这些错误,需要注意的东西:

  • 清楚 DataFrame 或 Series 的索引类型(整数索引或标签索引)。
  • 在使用索引之前,先检查 DataFrame 或 Series 的索引和列名。
  • 在进行索引操作时,确保使用了正确的符号和方法。
  • 对于复杂的索引操作,可以使用小范围的测试数据来验证您的索引逻辑是否正确。
  • 在进行链式索引时,使用括号来确保正确的执行顺序。

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

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

相关文章

# 消息中间件 RocketMQ 高级功能和源码分析(五)

消息中间件 RocketMQ 高级功能和源码分析(五) 一、 消息中间件 RocketMQ 源码分析:NameServer 路由元数据 1、消息中间件 RocketMQ 中,NameServer 路由管理 NameServer 的主要作用是为消息的生产者和消息消费者提供关于主题 To…

AI口语练习APP的技术难点

AI口语练习APP旨在帮助用户练习口语,因此其核心功能是语音识别和语音评测。以下是一些AI口语练习APP的主要技术难点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 语音识别 语音识别是将语音信号转换为文本的过程。…

怎么移除pdf文件编辑限制,有哪些方法?

PDF是我们在学习或工作中常常应用到的一种文件格式,因为它的跨平台性和文档保真度而备受欢迎。但是,有时我们会遇到PDF编辑权限被限制了,那么pdf解除编辑限制可以用什么方法呢?别急,接下来,本文将深入探讨如…

hadoop Yarn资源调度器

概述 Yarn是一个资源调度平台,负责为运算程序提供服务器资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序相当于操作系统之上的应用程序 Yarn基本架构 YARN 主要由ResourceManager、NodeManager、ApplicationMaster、Container …

斯坦福CS229机器学习中文速查笔记.pdf

斯坦福CS229是一门经典的机器学习课程,算是机器学习领域的明星课,相信不少人在B站上看过这门课的视频。 这门课主要介绍了机器学习和统计模式识别。内容包括:监督学习(生成/鉴别学习,参数/非参数学习,神经…

四十八、openlayers地图调色总结——锐化、模糊、浮雕滤镜,调整地图色相、饱和度、亮度

这篇是对滤镜的总结,方便工作中直接使用。 想要调整图层的颜色,有两种方法。 方法一: 加载图层时使用tileLoadFunction函数拿到context添加canvas滤镜效果。 this.imagery new TileLayer({source: new XYZ({url: "https://server.arc…

Qt6视频播放器项目框架代码

视频播放的关键代码如下: 使用Qt6的QMediaPlayer,QVideoWidget实现 void FunnyWidget::initVideo() {player = new QMediaPlayer(this);videoWidget = new QVideoWidget(this);playButton = new QPushButton("Play", this);pauseButton = new QPushButton("…

BLE-蓝牙广播

蓝牙广播:

生信网络学院|06月21日《SolidWorks Costing助力制造企业建立成本核算体系》

课程主题:SolidWorks Costing助力制造企业建立成本核算体系 课程时间:2024年06月21日 14:00-14:30 主讲人:张丹清 生信科技 售前顾问 Costing成本分析简介钣金件成本分析加工件成本分析装配体成本分析总结&答疑 安装腾讯会议客户端或…

CSS实现文字上下滚动、间歇滚动和无限滚动

目录 1、连续滚动2、间歇性向上滚动3、任意个数向上滚动 本文主要记录了如何实现文字上下滚动效果&#xff0c;实现主要就是用到了css3的两个属性&#xff1a; framekeys和 animation 1、连续滚动 <div class"scroll-continuous"><div class"content…

【玩儿】TX应用宝模拟器安装第三方APK

TX应用宝模拟器安装第三方APK 前言应用宝下载安装三方APK安装审核应用安装自研应用安装执行 adb 命令创建应用快捷方式 前言 腾讯应用开放平台公布了应用宝电脑版的产品详情&#xff0c;应用宝电脑版支持从PC桌面直接打开安卓应用&#xff0c;无需感知应用市场打开界面&#x…

【教学类-64-04】20240619彩色鱼骨图(一)6.5*1CM 6根棒子720种

背景需求&#xff1a; 幼儿益智早教玩具❗️鱼骨拼图 - 小红书在家也能自制的木棒鱼骨拼图&#xff0c;你也收藏起来试一试吧。 #母婴育儿 #新手爸妈 #玩具 #宝宝玩具怎么选 #早教 #早教玩具 #幼儿早教 #益智早教 #玩具 #宝宝早教 #益智拼图 #宝宝拼图 #玩不腻的益智玩具 #儿童…

第四篇:精通Docker构建:Dockerfile的艺术与策略

精通Docker构建&#xff1a;Dockerfile的艺术与策略 1. 开篇&#xff1a;探索Docker的革命 在探讨我们的主题之前&#xff0c;让我们先回顾一下Docker的概念。Docker是一个开源平台&#xff0c;用于自动化应用程序的部署、扩展和管理&#xff0c;这一切都是在轻量级的容器中进…

keil5显示内存和存储占用百分比进度条工具

简介 [Keil5_disp_size_bar] 以进度条百分比来显示keil编译后生成的固件对芯片的内存ram和存储flash的占用情况, 并生成各个源码文件对ram和flash的占比整合排序后的map信息的表格和饼图。 原理是使用C语言遍历当前目录找到keil工程和编译后生成的map文件 然后读取工程文件和m…

[16] 使用Opencv_CUDA 实现访问图像像素、直方图均衡化、几何变换

使用Opencv_CUDA 实现访问图像像素、直方图均衡化、几何变换 访问图像的各个像素强度直方图的计算与均衡几何变换&#xff1a;缩放、平移与旋转 1. 访问图像的各个像素强度 #include <iostream> #include "opencv2/opencv.hpp"int main() {cv::Mat h_img1 …

调取Windows系统虚拟键盘

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using System.Diagnostics;namespace 调取Windows虚拟键盘 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void richTextBox1_DoubleClick(object sender, EventArgs e){Proces…

对于补码的个人理解

1. 十进制的取模计算 现在我想要使另一个数加上2后用8取模后也等于1&#xff0c;这个数可以是哪些&#xff1f; 这个问题比较简单&#xff0c;只需要-1加上8的倍数即可 例如&#xff1a; 如果我们想要得到距离-1这个负数最近的一个正数7&#xff0c;直接使用-18即可。反过来想…

JavaSE 面向对象程序设计高级 方法引用 2024详解

在编程中&#xff0c;方法引用&#xff08;Method Reference&#xff09;是一种技术&#xff0c;它让你能够直接引用一个现有的函数或方法&#xff0c;而无需通过对象实例来调用。这种方法在函数式编程和高阶函数中非常有用&#xff0c;因为它提供了简洁的方式来传递函数行为&a…

晋升受阻或遭受不公:你想到这条路了吗?

晋升受阻或遭受不公&#xff1a;你想到这条路了吗&#xff1f; 当你在职场上遇到晋升受阻或者感觉受到不公平对待的时候&#xff0c;你一般选择怎么处理&#xff1f;是逆来顺受、忍气吞声、还是听命安排与据理力争&#xff1f; 其实并非无路可走&#xff0c;这时候&#xff0c;…

在二维空间中用椭圆表示不确定性

在二维空间中用椭圆表示不确定性 flyfish import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Ellipse# 生成示例数据 np.random.seed(0) data np.random.multivariate_normal([0, 0], [[4, 2], [2, 3]], size500)# 计算均值和协方差矩阵 …