Pandas iloc用法

Pandas iloc用法

参考:pandas iloc

pandas是Python中用于数据处理和分析的强大工具,它提供了大量的功能,使得数据处理变得简单而高效。在pandas中,DataFrame是最常用的数据结构,它可以看作是一个二维的表格,其中每一列可以是不同的数据类型(数值、字符串、布尔值等),而iloc则是DataFrame中非常重要的一个功能,它可以让我们以整数位置(从0到length-1的范围内)来进行基于位置的索引。

本文将详细介绍pandasiloc功能,包括其基本用法、常见操作以及一些注意事项,并通过大量的示例代码来帮助读者更好地理解和掌握iloc

1. iloc的基本用法

iloc的基本用法非常简单,它的语法格式如下:

dataframe.iloc[row_indexer,column_indexer]

其中,row_indexercolumn_indexer都是整数或整数列表,分别表示行和列的位置。

下面是一个简单的示例:

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

# 使用iloc获取第0行第0列的元素
print(df.iloc[0, 0])

Output:

Pandas iloc用法

2. iloc的常见操作

2.1 选择单个行或列

使用iloc可以非常方便地选择单个行或列,只需要指定行或列的位置即可。例如,选择第0行:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

print(df.iloc[0])

Output:

Pandas iloc用法

选择第0列:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

print(df.iloc[:, 0])

Output:

Pandas iloc用法

2.2 选择多个行或列

iloc也支持选择多个行或列,只需要将行或列的位置放在一个列表中即可。例如,选择第0行和第2行:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

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

Output:

Pandas iloc用法

选择第0列和第2列:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

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

Output:

Pandas iloc用法

2.3 选择行和列的子集

iloc还可以选择行和列的子集,只需要指定行和列的位置范围即可。例如,选择第0行到第2行,第0列到第2列的子集:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

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

Output:

Pandas iloc用法

注意,这里的范围是左闭右开的,即包含左边的位置,但不包含右边的位置。

2.4 使用布尔索引

iloc也支持使用布尔索引,只需要提供一个布尔列表,列表中的True表示选择对应的行或列,False表示不选择。例如,选择第0行和第2行:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

print(df.iloc[[True, False, True, False, False]])

Output:

Pandas iloc用法

选择第0列和第2列:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

print(df.iloc[:, [True, False, True, False]])

Output:

Pandas iloc用法

3. iloc的注意事项

虽然iloc的用法非常灵活,但在使用时还是需要注意一些事项。

首先,iloc的索引都是基于位置的,而不是基于标签的。这意味着,无论行或列的标签是什么,iloc都只关心它们的位置。例如,即使行的标签是字符串,我们仍然需要使用整数位置来进行索引:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

# 尝试使用标签索引将会引发错误
# print(df.iloc['0'])  # 错误示例,不应运行

# 正确的使用方式
print(df.iloc[0])  # 使用位置索引

Output:

Pandas iloc用法

其次,当使用切片索引时,iloc的行为与Python列表或NumPy数组的切片类似,都是左闭右开区间。这意味着,指定的结束索引并不包含在内。例如:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

# 选择第1行到第3行,第1列到第3列的子集
print(df.iloc[1:4, 1:4])

Output:

Pandas iloc用法

最后,使用iloc时需要确保索引不会越界。与Python的列表不同,DataFrame的iloc在索引越界时会抛出一个IndexError,而不是简单地返回一个空切片。例如:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

# 尝试访问不存在的行索引
# print(df.iloc[10])  # 错误示例,不应运行

4. iloc的高级用法

4.1 使用切片和单个索引的组合

iloc可以灵活地结合切片和单个索引来选择数据。例如,选择第1行和第0列到第2列的数据:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

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

Output:

Pandas iloc用法

4.2 使用列表和切片的组合

iloc还允许使用列表和切片的组合来进行更复杂的数据选择。例如,选择第0行和第2行,以及第1列到第3列的数据:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

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

Output:

Pandas iloc用法

4.3 使用布尔数组进行索引

iloc也支持使用布尔数组进行索引,这在进行条件筛选时非常有用。例如,选择所有A列值为pandasdataframe.com的行:

import pandas as pd

df = pd.DataFrame({
   'A': ['pandasdataframe.com', 'B', 'C', 'D', 'E'],
   'B': ['pandasdataframe.com', 'G', 'H', 'I', 'J'],
   'C': ['pandasdataframe.com', 'L', 'M', 'N', 'O'],
   'D': ['pandasdataframe.com', 'P', 'Q', 'R', 'S']
})

# 创建一个布尔数组
condition = df['A'] == 'pandasdataframe.com'

print(df.iloc[condition.values])

Output:

Pandas iloc用法

通过这些示例,我们可以看到iloc在数据选择和操作中的强大功能和灵活性。无论是基本的行列选择,还是更复杂的数据操作,iloc都能提供有效的解决方案。在实际的数据处理和分析工作中,合理利用iloc可以大大提高工作效率。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程