蓝桉云顶

Good Luck To You!

什么是iloc?它在数据处理中扮演什么角色?

iloc是pandas库中的一种基于位置的索引方法,用于快速访问DataFrame或Series对象的数据。

iloc是pandas库中用于基于整数位置进行索引和切片的一种方法,它允许通过行和列的整数位置来访问DataFrame中的特定数据,以下是对iloc的详细解释及示例:

一、基本用法

1. 单个整数选择

语法df.iloc[row_index]

示例

import pandas as pd
data = {'name': ['Tom', 'Nick', 'John', 'Tom', 'John'],
        'age': [20, 21, 19, 20, 18],
        'score': [90, 85, 88, 92, 90]}
df = pd.DataFrame(data)
print(df.iloc[3])

输出

name      Tom
age       20
score     92
Name: 3, dtype: object

这个例子选择了DataFrame中第四行(索引为3)的所有列。

2. 整数列表选择

语法df.iloc[[row_index1, row_index2, ...]]

示例

print(df.iloc[[0, 2, 4]])

输出

    name  age  score
0    Tom   20     90
2  John    19     88
4   John    18     90

这个例子选择了DataFrame中第一行、第三行和第五行。

3. 整数切片对象选择

语法df.iloc[start:end]df.iloc[start:end, column_start:column_end]

示例

print(df.iloc[1:3])

输出

    name  age  score
1   Nick   21     85
2   John   19     88

这个例子选择了DataFrame中第二行到第三行(不包括第四行)的所有列。

另一个例子是选择特定的行和列范围:

print(df.iloc[0:2, 0:3])

输出

    name  age  score
0    Tom   20     90
1   Nick   21     85

这个例子选择了DataFrame中第一行到第二行(不包括第三行)以及第一列到第三列(不包括第四列)。

4. 布尔数组选择

语法df.iloc[bool_array]

示例

print(df.iloc[df['age'].values > 19])

输出(假设):

    name  age  score
1   Nick   21     85
2   John   19     88
4   John    18     90

这个例子选择了DataFrame中年龄大于19的所有行。

5. 可调用函数选择

语法df.iloc[lambda x: condition]

示例

print(df.iloc[lambda x: x.index % 2 == 0])

输出

    name  age  score
0    Tom   20     90
2   John   19     88
4   John    18     90

这个例子选择了DataFrame中索引为偶数的所有行。

二、混合索引和列的索引器类型

可以混合使用不同类型的索引器来选择行和列,可以选择整个轴上的标量整数,也可以使用切片对象或布尔数组,下面是一个示例:

df = pd.DataFrame({'A': [1, 2, 3],
                   'B': [4, 5, 6],
                   'C': [7, 8, 9]})
print(df.iloc[0, [1, 2]])

输出

B    4
C    7
Name: 0, dtype: int64

这个例子选择了DataFrame中第一行(索引为0)的第二列和第三列。

另一个更复杂的示例是:

print(df.iloc[1:3, [0, 2]])

输出

   A  C
1  2  6
2  3  9

这个例子选择了DataFrame中第二行到第三行(不包括第四行)的第一列和第三列。

三、FAQs

Q1: iloc和loc有什么区别?

A1: iloc是基于整数位置的索引,而loc是基于标签的索引,iloc使用整数位置来选择数据,而loc使用行标签和列标签来选择数据,iloc在切片时不包含结束位置,而loc包含结束位置,对于缺失的标签,iloc会引发KeyError,而loc会返回NaN。

Q2: 如果请求的索引器越界,iloc会如何处理?

A2: 如果请求的索引器越界,并且使用的是切片对象,则iloc会根据Python/NumPy的切片语义处理,即可能会引发IndexError或返回空的结果,如果请求的索引器是标量整数且越界,则会引发IndexError。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年1月    »
12345
6789101112
13141516171819
20212223242526
2728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接