使用 Pandas DataFrame iloc 属性进行基于索引的访问

2023-10-20

The iloc财产在Pandas库代表“整数位置”,并提供基于整数的索引以按位置进行选择。

这意味着您可以通过整数位置选择 DataFrame 中的行和列。

在本教程中,我们将介绍使用的各个方面iloc,包括选择单行、多行、特定列,甚至单个单元格。我们还将深入研究布尔索引等高级技术。

 

 

通过整数索引选择单行

您可以通过提供要提取的行的整数索引来获取整行数据。


import pandas as pd
data = {
    'Name': ['John', 'Doe', 'Jane', 'Smith'],
    'Age': [28, 34, 22, 45],
    'City': ['New York', 'Los Angeles', 'Chicago', 'Houston']
}
df = pd.DataFrame(data)

# Select the second row
selected_row = df.iloc[1]
print(selected_row)
  

Output:


Name             Doe
Age              34
City    Los Angeles
Name: 1, dtype: object
  

 

使用整数索引列表选择多行

有时,您可能希望根据行的位置一次检索多行。和iloc,您可以通过提供整数索引列表来做到这一点。

此方法返回一个新的 DataFrame,仅包含指定位置的行。


# Select the first and third rows
selected_rows = df.iloc[[0, 2]]
print(selected_rows)
  

Output:


   Name  Age       City
0  John   28   New York
2  Jane   22    Chicago
  

通过传递包含的列表0 and 2 to iloc,我们已经获取了 DataFrame 的第一行和第三行。

 

使用一系列整数索引对行进行切片

iloc还允许您使用基于范围的索引来对行进行切片。

您可以指定开始索引和结束索引,以及可选的步骤。这会从 DataFrame 返回一系列连续行。


# Select the first three rows
sliced_rows = df.iloc[0:3]
print(sliced_rows)
  

Output:


   Name  Age         City
0  John   28     New York
1   Doe   34  Los Angeles
2  Jane   22      Chicago
  

在提供的示例中,我们从第 0 个索引(含)开始,一直到但不包括第 3 个索引。

 

通过整数索引选择单个列

列是第二个轴(轴=1)。利用iloc,您可以通过整数索引选择各个列。

请注意,当您使用提取单个列时iloc,结果是一个 Series 对象,而不是 DataFrame。


# Select the first column
selected_column = df.iloc[:, 0]
print(selected_column)
  

Output:


0    John
1     Doe
2    Jane
3   Smith
Name: Name, dtype: object
  

冒号:行位置中的意思是“所有行”,并且0逗号后面指定第一列。

 

使用整数索引列表选择多个列

正如您可以使用索引列表选择多行一样,iloc通过提供列的整数索引列表来支持选择多个列。


# Select the first and third columns
selected_columns = df.iloc[:, [0, 2]]
  

Output:


   Name       City
0  John   New York
1   Doe  Los Angeles
2  Jane    Chicago
3  Smith   Houston
  

在此示例中,我们使用列表定位第一列和第三列[0, 2]在列位置。

 

使用一系列整数索引对列进行切片

您可以使用iloc与基于范围的索引相结合,根据位置选择一组连续的列:


# Select the first two columns
sliced_columns = df.iloc[:, 0:2]
print(sliced_columns)
  

Output:


   Name  Age
0  John   28
1   Doe   34
2  Jane   22
3  Smith  45
  

在这里,我们利用了范围0:2在列的位置内iloc.

这将选择从第 0 个索引(包括)开始到(但不包括)第 2 个索引的列。

 

通过指定行索引和列索引选择单个单元格

Using iloc,您可以通过指定行和列整数索引来查明并提取单个单元格的值。


# Select the cell from the second row and first column
cell_value = df.iloc[1, 0]
print(cell_value)
  

Output:


Doe
  

在此代码片段中,我们使用以下命令定位第二行第一列中的单元格iloc[1, 0]。结果就是名字“Doe”。

 

使用索引列表选择特定列的行

您可以通过提供两个维度的整数索引列表来同时选择多行和特定列。


# Select the first and third rows for the first and third columns
subset = df.iloc[[0, 2], [0, 2]]
print(subset)
  

Output:


   Name       City
0  John   New York
2  Jane    Chicago
  

在提供的示例中,我们为行索引和列索引指定了一个列表:[0, 2].

这将获取第一行和第三行,并且在这些行中仅获取第一列和第三列。

 

使用整数索引范围对行和列进行切片

With iloc,您可以使用范围对行和列进行切片,提供子 DataFrame 作为输出。


# Select the first three rows and first two columns
subset = df.iloc[0:3, 0:2]
  

Output:


   Name  Age
0  John   28
1   Doe   34
2  Jane   22
  

在演示的代码中,我们组合了两个范围:0:3对于行和0:2对于列。

这将选择前三行和前两列。

 

设置特定单元格的值

Using iloc,您可以通过指定其行索引和列索引来设置任何特定单元格的值。


# Set the value of the cell in the second row and first column to 'Alex'
df.iloc[1, 0] = 'Alex'
print(df)
  

Output:


    Name  Age         City
0   John   28     New York
1   Alex   34  Los Angeles
2   Jane   22      Chicago
3  Smith  45      Houston
  

 

设置一行或一组行的值

The iloc属性,您可以更新整行或一组行的值:


# Set values for the third row
df.iloc[2] = ['Ella', 30, 'Seattle']

# Set values for the first and fourth rows
df.iloc[[0, 3]] = [['Bob', 29, 'Boston'], ['Lucas', 47, 'Miami']]
print(df)
  

Output:


    Name  Age         City
0    Bob   29       Boston
1   Alex   34  Los Angeles
2   Ella   30      Seattle
3  Lucas  47        Miami
  

在示例中,我们首先使用以下命令为第三行设置新值df.iloc[2] = ['Ella', 30, 'Seattle'],更新“Jane”的数据。

然后,我们定位第一行和第四行,同时分配新值。

 

设置一列或一组列的值

The iloc属性允许您一次更新整个列或多个列:


# Set values for the 'Age' column
df.iloc[:, 1] = [35, 36, 31, 48]

# Set values for the 'Name' and 'City' columns
df.iloc[:, [0, 2]] = [['Mia', 'Atlanta'], ['Liam', 'Dallas'], ['Sophia', 'Denver'], ['Ethan', 'Phoenix']]
print(df)
  

Output:


     Name  Age      City
0     Mia   35   Atlanta
1    Liam   36    Dallas
2  Sophia   31    Denver
3   Ethan   48   Phoenix
  

在这里,我们首先定位“年龄”列,并使用分配一个新的年龄值列表df.iloc[:, 1].

接下来,我们继续同时设置“名称”和“城市”列的值。

 

设置单元格范围(行和列)的值

The iloc属性允许您跨行和列更新一系列单元格,提供要修改的特定值片段。


# Set values for the cells in the first two rows and last two columns
df.iloc[0:2, 1:3] = [[40, 'Orlando'], [37, 'Sacramento']]
print(df)
  

Output:


    Name  Age        City
0   John   40     Orlando
1    Doe   37  Sacramento
2   Jane   31     Chicago
3  Smith   48     Houston
  

在上面的演示中,我们选择了跨越 DataFrame 的前两行和最后两列的单元格块。

通过使用df.iloc[0:2, 1:3],我们指定此范围并为相应行的“年龄”和“城市”列设置新值。

请记住,更新单元格范围时,您分配的值的形状应与您定位的单元格范围的形状匹配,以避免数据不一致。

 

布尔索引(使用布尔数组/掩码)

您可以使用布尔值(True 或 False)数组根据特定条件过滤行,而不是按整数索引选择行或列。

让我们深入研究如何将布尔数组/掩码与iloc优化您的 DataFrame 选择。

基本布尔索引

首先根据条件创建布尔掩码:


# Create a boolean mask for rows where Age is greater than 35
age_mask = df['Age'] > 35
  

现在,使用此面膜iloc:


filtered_data = df.iloc[age_mask.values]
print(filtered_data)
  

Output:


    Name  Age     City
3  Smith   45  Houston
  

在示例中,我们首先生成一个布尔掩码age_mask标识“年龄”超过 35 的行。当应用时iloc,仅包含以下行True掩码中的值被保留。

组合多个条件

您可以使用按位运算符组合多个条件,例如& (and), |(或),以及~ (not).


# Create a mask for rows where Age is greater than 35 and City is 'Houston'
combined_mask = (df['Age'] > 35) & (df['City'] == 'Houston')
filtered_data = df.iloc[combined_mask.values]
print(filtered_data)
  

Output:


    Name  Age     City
3  Smith   45  Houston
  

在这里,我们过滤个人年龄超过 35 岁且居住在“Phoenix”的条目。

 

错误处理和常见陷阱

使用导航 Pandas DataFrameiloc通常是流畅且直观的。但是,您可能会遇到一些潜在的陷阱和错误。

常见的错误之一是尝试访问 DataFrame 中不存在的索引,从而导致IndexError.


# Attempting to access the fifth row in a DataFrame with only four rows
# will raise an error.
try:
    print(df.iloc[4])
except IndexError as e:
    print(f"Error: {e}")
  

Output:


Error: single positional indexer is out-of-bounds
  

为了避免这种情况,请始终确保您提供的索引位于 DataFrame 的有效范围内。

 

Resource

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.iloc.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Pandas DataFrame iloc 属性进行基于索引的访问 的相关文章

随机推荐

  • 如何在 Fedora 29-25、CentOS 7/6 上安装 VirtualBox 来宾添加

    The 虚拟盒子Guest Additions 提供了一些设备驱动程序和应用程序 用于优化来宾操作系统的性能和可用性 它安装在来宾操作系统内 因此 您需要在系统上运行的每个虚拟机上安装 我建议安装或升级 VirtualBox最新版本优先 本
  • 如何在 Bash 中转义单引号

    Bash 脚本对于开发人员 系统管理员以及任何需要在 Unix 或 Linux 系统上自动执行任务的人来说是一项至关重要的技能 有时 您需要在 bash 脚本的字符串中使用单引号 但是 由于 bash 解释单引号的方式 如果处理不当 可能会
  • 如何在 Ubuntu 18.04 和 16.04 上安装 ownCloud 10

    ownCloud使用 Web 界面提供数据访问 它还提供跨设备同步和共享的选项 一切都在您的控制之下 使用 ownCloud 我们可以轻松地对每个用户的文件 ACL 实施限制 ownCloud 提供桌面客户端 Windows MAC Lin
  • 如何使用预准备语句防止 PHP 中的 SQL 注入

    SQL 注入是一种常见的攻击形式 针对使用 SQL 数据库的 Web 应用程序 在此类攻击中 攻击者利用应用程序代码中的漏洞注入恶意 SQL 语句 这些语句可能会危害数据库并可能泄露敏感信息 PHP 是一种流行的 Web 开发语言 通常与
  • 了解 Python 中的区分大小写

    Python 是使用最广泛的编程语言之一 以其简单性和可读性而闻名 然而 与许多语言一样 它具有新手和经验丰富的程序员都应该理解的独特特征 其中一项特征是区分大小写 在本指南中 我们将深入了解 Python 中的大小写敏感性及其重要性 什么
  • 如何设置 SFTP Chroot Jail

    如果您是管理 Linux 服务器的系统管理员 您可能需要向某些用户授予 SFTP 访问权限 以将文件上传到他们的主目录 默认情况下 可以通过SSH SFTP等方式登录系统的用户SCP可以浏览整个文件系统 包括其他用户的目录 如果这些用户是可
  • 如何在 Linux 中终止进程

    您是否遇到过这样的情况 您启动了一个应用程序 但在使用该应用程序时突然变得无响应并意外崩溃 您尝试再次启动应用程序 但没有任何反应 因为原始应用程序进程从未真正完全关闭 好吧 我们所有人都曾在某个时刻发生过这种事 不是吗 解决方案是终止或终
  • 如何在 CentOS 7 上设置 SSH 密钥

    Secure Shell SSH 是一种加密网络协议 专为客户端和服务器之间的安全连接而设计 两种最流行的 SSH 身份验证机制是基于密码的身份验证和基于公钥的身份验证 使用 SSH 密钥通常比传统的密码身份验证更安全 更方便 本教程介绍如
  • 如何重命名本地和远程 Git 分支

    您正在与一群人合作开发一个项目 并且您已经为 git 分支定义了命名约定 你创建了一个新分支 将更改推送到远程存储库 并意识到您的分支名称不正确 幸运的是 Git 允许您使用以下命令轻松地重命名分支 git branch m命令 本指南介绍
  • 了解 Linux 文件权限

    在 Linux 中 文件权限 属性和所有权控制系统进程和用户对文件的访问级别 这确保只有授权的用户和进程才能访问特定的文件和目录 Linux 文件权限 基本的 Linux 权限模型的工作原理是将每个系统文件与所有者和组相关联 并为三类不同的
  • Python 字符串替换

    在本文中 我们将讨论如何在 Python 中使用replace method replace 方法 在Python中 字符串被表示为不可变的str对象 这str类附带了许多允许您操作字符串的方法 The replace 方法采用以下语法 s
  • 如何在 Ubuntu 18.04 上安装 Sublime Text 3

    崇高的文字是用于 Web 和软件开发的最广泛使用的文本和源代码编辑器之一 它速度非常快 并且具有许多开箱即用的强大功能 您可以通过安装新插件和创建自定义设置来增强其功能 在本教程中 我们将向您展示如何在 Ubuntu 18 04 计算机上安
  • Linux 中的 rmmod 命令

    每个Linux操作系统的核心组件是Linux内核 它管理系统的资源 并充当计算机硬件和软件之间的中介 Linux内核是一个采用模块化设计的软件 内核模块 通常称为驱动程序 是扩展内核功能的一段代码 模块可以编译为可加载模块或内置到内核中 可
  • 如何在 Windows 上创建可启动的 Ubuntu U 盘

    本教程将引导您完成在 Windows 上创建可启动 Ubuntu U 盘的过程 您可以使用此 U 盘来启动并测试或在任何支持从 USB 启动的计算机上安装 Ubuntu 先决条件 4GB 或更大的 USB 记忆棒驱动器 Microsoft
  • 如何在 CentOS 8 上安装 Ruby

    Ruby 是当今最流行的语言之一 它具有优雅的语法 并且是 Ruby on Rails 框架背后的语言 在本文中 我们将探索在 CentOS 8 上安装 Ruby 的不同方法 我们将展示如何从默认的 CentOS 8 存储库并使用 Rben
  • 如何在 Vim / Vi 中复制、剪切和粘贴

    处理文本文件时 复制 剪切和粘贴文本是最常执行的任务之一 Vim 或其前身 Vi 预装在 macOS 和几乎所有 Linux 发行版上 在您最喜欢的编辑器不可用的情况下 了解 Vim 的基础知识会很有帮助 本文介绍如何在 Vim Vi 编辑
  • 如何创建并列出本地和远程 Git 分支

    分支是软件开发过程的一部分 也是 Git 中最强大的功能之一 分支本质上是指向某个提交的指针 当修复错误或开发新功能时 开发人员正在创建一个新分支 稍后可以将其合并到主代码库中 本文介绍如何创建和列出本地和远程 Git 分支 列出 Git
  • Linux find 命令的高级正则表达式

    The 查找命令Linux 中允许您根据不同的条件在目录层次结构中搜索文件和目录 的一项强大功能find是它使用正则表达式进行搜索的能力 正则表达式 或简称 regex 提供了一种匹配字符串中字符序列的方法 目录 hide 1 正则表达式引
  • Bash While 循环:从基础知识到实际应用

    In Bash 脚本 while 循环用于在指定条件为 true 时执行语句块 基本语法是 while CONDITION do Commands to be executed done 只要 CONDITION 计算结果为 true 循环
  • 使用 Pandas DataFrame iloc 属性进行基于索引的访问

    The iloc财产在Pandas库代表 整数位置 并提供基于整数的索引以按位置进行选择 这意味着您可以通过整数位置选择 DataFrame 中的行和列 在本教程中 我们将介绍使用的各个方面iloc 包括选择单行 多行 特定列 甚至单个单元