首页 > 其他分享 >透彻理解 pandas 切片中 df.loc ,df.iloc

透彻理解 pandas 切片中 df.loc ,df.iloc

时间:2023-10-05 09:57:58浏览次数:31  
标签:loc df 标签 位置 iloc data

在处理 pandas 数据框时,选择数据是非常常见的操作。为了满足这种需求,pandas 提供了多种选择数据的方法,其中最常用的是 df.locdf.iloc。尽管它们在许多情况下都可以互换使用,但它们之间确实存在一些关键区别,初学者必须明确这些区别以避免潜在的错误。

1. 基本定义

  • df.loc:基于标签的数据选择方法。
  • df.iloc:基于位置的数据选择方法。

2. 什么是标签?什么是位置?

在深入了解这两种方法之前,我们首先要理解“标签”和“位置”这两个概念。

标签 (Label)

标签是数据框或系列的索引。这些索引可以是数字,也可以是字符串或其他数据类型。例如:

import pandas as pd

data = {'A': ['apple', 'banana', 'cherry']}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
print(df)

输出:

      A

x apple
y banana
z cherry

在上述例子中,'x', 'y', 'z' 就是数据框 df 的标签(或索引)。

位置 (Position)

位置是数据框或系列中的元素的整数位置。无论索引是什么,位置始终从0开始,并按顺序递增。例如,在上述数据框 df 中,'apple' 的位置是 0,'banana' 的位置是 1,'cherry' 的位置是 2。

3. df.loc vs df.iloc

让我们通过一些示例更详细地探讨这两种方法的使用。

示例 1:使用数字索引

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
print(df)

输出:

    A B
0 1 4
1 2 5
2 3 6

在这个例子中,标签和位置是相同的。所以,df.loc[0:1, 'A']df.iloc[0:1, 0] 会产生相同的结果。

示例 2:使用非连续数字索引

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data, index=[2, 1, 0])
print(df)

输出:

     A   B
2   1   4
1   2   5
0   3   6

在这种情况下,标签和位置是不同的。所以,df.loc[2:1, 'A'] 选择的是标签为2和1的行,而 df.iloc[0:1, 0] 选择的是位置为0的行。

示例 3:使用字符串索引

data = {'A': ['apple', 'banana', 'cherry']}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
print(df)

输出:

A
x apple
y banana
z cherry

在这种情况下,只有 df.loc 可以使用字符串索引,而 df.iloc 只能使用整数位置。
df.locdf.iloc 在很多情况下都可以用来选择数据,但它们之间的关键区别在于选择的基准:标签还是位置。为了避免混淆和错误,初学者应该始终明确他们正在使用的是哪种选择方法,并确保正确使用它。

希望这篇博客能帮助您更好地理解和使用 pandas 中的 df.locdf.iloc。如果您有任何疑问或需要进一步的帮助,请随时联系我们


标签:loc,df,标签,位置,iloc,data
From: https://www.cnblogs.com/heguijin/p/17743082.html

相关文章

  • ext4文件系统的superblock修复
    操作系统版本[✔️]CentOS7.x/RHEL7.x问题描述ext4文件系统的superblock损坏,利用备份块恢复修复过程检查文件系统fsck.ext4/dev/sdb-a:自动修复文件系统,不询问任何问题-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统-t<文件系统类型>:指定要......
  • VMware ESXi 7.0 U3o macOS Unlocker & OEM BIOS 标准版和厂商定制版
    VMwareESXi7.0U3omacOSUnlocker&OEMBIOS标准版和厂商定制版ESXi7.0标准版和Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)定制版镜像请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-oem/,查看最新版。原创作品,转载请保留出处。作......
  • VMware ESXi 7.0 U3o macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动
    VMwareESXi7.0U3omacOSUnlocker&OEMBIOS集成网卡驱动和NVMe驱动(集成驱动版)ESXi7U3标准版集成Intel网卡、RealtekUSB网卡和NVMe驱动请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-sysin/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.o......
  • 什么是 Accessibility 设计领域的 Lock Focus
    锁定焦点(LockFocus)是一种在辅助功能(Accessibility)领域中常见的技术,用于提高用户界面的可访问性。在本文中,我们将详细介绍锁定焦点的更多细节,以及如何使用cxFocus指令来实现这一功能。什么是锁定焦点?锁定焦点是一种技术,它允许我们将某个容器元素内的所有可聚焦元素都暂时锁定,......
  • 什么是 Accessibility 领域的 Bypass Blocks
    Accessibility领域的BypassBlocks是指通过一种或多种方式绕过或规避Web或移动应用程序中的可访问性障碍,以使信息、功能或内容对于所有用户,包括那些具有不同能力或使用不同辅助技术的人,都能够无障碍地访问和使用。这些障碍可能包括视觉、听觉、认知或运动方面的障碍。BypassBlock......
  • 解决ERROR oslo_messaging.rpc.server UnixHTTPConnectionPool(host=‘localhost‘, p
    zun.common.exception.ZunException:Unexpectederror:UnixHTTPConnectionPool(host=‘localhost’,port=None):Readtimedout.(readtimeout=60)2023-09-1317:26:08.6498468ERRORoslo_messaging.rpc.server[req-6ff62c08-fd25-4df6-8a81-d144956cbbd97db25ffff6314......
  • ubuntu20.04 将 max locked memory从默认的65536改为无限制
    RDMA开发中,需要注册MemoryRigon,需要比较大的内存区域,如果不把Ubuntu20.04系统默认的maxlockedmemory从默认的65536改为unlimited,将会报出这个错误:Couldn'tallocateMR解决办法如下(感谢chatGPT老师哈哈)Tosetthemaximumlockedmemoryfrom65536tounlimitedonUbunt......
  • 雷达到达角估计算法3DFFT,DBF,MUSIC,Capon的原理、对比、各自的优势
    雷达到达角估计算法3DFFT,DBF,MUSIC,Capon的原理、对比、各自的优势雷达到达角估计是雷达信号处理中的一个重要问题,旨在确定来自目标的雷达信号的到达角度。雷达到达角估计算法可以分为时域方法和频域方法两种类型。其中,频域方法可以进一步分为基于阵列信号处理的方法和基于普通雷达......
  • next-key lock
    加锁基本单位next-keylock=gaplock+rowlock范围前开后闭区间加锁规则原则1加锁的基本单位是next-keylock。原则2查找过程中访问到的对象才会加锁。优化1索引上的等值查询,给唯一索引加锁的时候,next-keylock退化为行锁。优化2索引上的等值查......
  • python批量插入图片到一个pdf中
    importosfromPILimportImagefromPyPDF2importPdfFileMerger#防止字符串乱码os.environ['NLS_LANG']='SIMPLIFIEDCHINESE_CHINA.UTF8'classAllImagesToPdf:  def__init__(self):    self.imgs_path="imgs" #将所有的图片放到此文件夹中  ......