pandas.DataFrame.iloc[] 是 Pandas 中用于按 位置(而非标签)来进行行和列选择的功能。它允许基于行列的整数位置来索引数据。与 .loc[] 不同,iloc[] 仅接受 整数位置 或 整数位置的切片。
基本语法
DataFrame.iloc[row_indexer, column_indexer]
row_indexer:选择行的整数位置(可以是整数、切片、整数列表等)。column_indexer:选择列的整数位置(同样可以是整数、切片、整数列表等)。
1. 按整数位置选择单行单列
你可以通过整数位置选择单个元素,索引是从 0 开始的。
示例:选择单行单列
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6]
})
# 选择第1行(索引为0)和第2列(索引为1)
result = df.iloc[0, 1]
print(result) # 输出: 4
解释:
0表示选择第一行(行索引位置从 0 开始)。1表示选择第二列(列索引位置从 0 开始)。
2. 按整数位置选择多行或多列
你可以使用切片语法来选择多行或多列。
示例:选择多行和多列
# 选择前两行(索引 0 到 1)和前两列(索引 0 到 1)
result = df.iloc[0:2, 0:2]
print(result)
输出:
A B
0 1 4
1 2 5
解释:
0:2表示选择第 1 行到第 2 行(不包括第 2 行的索引,和 Python 切片的习惯一致)。0:2表示选择第 1 列和第 2 列(同样的切片逻辑)。
3. 使用列表选择多行或多列
你可以使用整数位置的 列表 来选择多个不连续的行或列。
示例:选择多个不连续的行或列
# 选择第 1 行和第 3 行,第 2 列和第 1 列
result = df.iloc[[0, 2], [1, 0]]
print(result)
输出:
B A
0 4 1
2 6 3
解释:
iloc[[0, 2], [1, 0]]表示选择第 1 行和第 3 行,以及第 2 列和第 1 列。
4. 选择单行或单列
如果只需要选择一行或一列,可以将 iloc[] 中的列索引或行索引部分设为单个整数。
示例:选择单行
# 选择第 2 行(索引为 1)
result = df.iloc[1]
print(result)
输出:
A 2
B 5
Name: 1, dtype: int64
示例:选择单列
# 选择第 1 列(索引为 0)
result = df.iloc[:, 0]
print(result)
输出:
0 1
1 2
2 3
Name: A, dtype: int64
解释:
df.iloc[1]选择的是第 2 行,结果是该行的 所有列。df.iloc[:, 0]选择的是第 1 列,结果是该列的 所有行。
5. 使用负索引
和 Python 的列表切片一样,iloc[] 支持负索引来从 末尾 选择行或列。
示例:使用负索引选择行或列
# 选择倒数第二行和倒数第二列
result = df.iloc[-2, -2]
print(result) # 输出: 2
解释:
-2表示倒数第二行或倒数第二列。
6. 与 loc[] 配合使用
虽然 loc[] 和 iloc[] 在功能上类似,但它们的区别是:loc[] 使用 标签 索引(如行和列的标签),而 iloc[] 使用 位置 索引。可以根据需要选择合适的索引方法。
示例:按位置选择行,按标签选择列
# 选择第 1 行(索引 0),和列 'A'(通过标签选择)
result = df.iloc[0, df.columns.get_loc('A')]
print(result) # 输出: 1
解释:
df.columns.get_loc('A')获取列标签A在 DataFrame 中的位置(索引 0),然后在iloc[]中使用该位置来选择对应列。
7. 修改值
和 .loc[] 一样,iloc[] 也可以用来修改 DataFrame 中的值。
示例:修改单个值
# 将第 2 行第 1 列的值修改为 100
df.iloc[1, 0] = 100
print(df)
输出:
A B
0 1 4
1 100 5
2 3 6
8. 使用 .iloc[] 选择与切片
可以用 .iloc[] 选择和切片操作类似,选择所有行或所有列,或使用布尔切片。
示例:选择所有行的特定列
# 选择所有行的第 1 列和第 2 列
result = df.iloc[:, 0:2]
print(result)
输出:
A B
0 1 4
1 100 5
2 3 6
总结
- 按位置选择数据:
iloc[]使用行列的整数位置索引,位置从0开始。 - 行选择:可以使用整数索引、切片或整数列表选择多行。
- 列选择:可以使用整数索引、切片或整数列表选择多列。
- 修改数据:
iloc[]可以用来修改特定行列的值。 - 负索引:支持负数索引,表示从末尾开始的行或列。
- 切片行为:和 Python 切片类似,包含起始位置但不包含结束位置。
iloc[] 非常适合需要通过整数位置进行索引、选择或修改 DataFrame 数据的场景,尤其是在数据处理或分析时需要按位置快速提取数据时。