df.iloc函数用法
时间: 2025-05-29 20:51:53 浏览: 32
`df.iloc` 是 Pandas 库中用于基于整数位置索引(integer-location based indexing)来选择数据的函数。它允许我们通过行号和列号来访问 DataFrame 中的数据,类似于数组的切片操作。
---
### 1. **基本用法**
```python
import pandas as pd
# 创建一个示例 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)
# 使用 iloc 选择数据
print(df.iloc[0]) # 第0行的所有列
print(df.iloc[:, 1]) # 所有行的第1列
print(df.iloc[0:2, 1:3]) # 第0到第1行,第1到第2列
```
#### 输出结果:
```
A 1
B 4
C 7
Name: 0, dtype: int64
0 4
1 5
2 6
Name: B, dtype: int64
B C
0 4 7
1 5 8
```
---
### 2. **详细说明**
#### (1) **选择单个元素**
```python
value = df.iloc[1, 2] # 获取第1行第2列的值
print(value) # 输出:8
```
- `df.iloc[row_index, column_index]`:通过指定行索引和列索引来获取单个元素。
#### (2) **选择多行或多列**
```python
subset = df.iloc[[0, 2], [1, 2]] # 选择第0行和第2行,第1列和第2列
print(subset)
```
- `[row_list, column_list]`:通过列表指定多行或多列。
- 输出:
```
B C
0 4 7
2 6 9
```
#### (3) **切片操作**
```python
slice_data = df.iloc[0:2, 1:3] # 切片选择第0到第1行,第1到第2列
print(slice_data)
```
- `start:end`:切片操作,包含起始索引但不包含结束索引。
- 输出:
```
B C
0 4 7
1 5 8
```
#### (4) **布尔索引**
```python
bool_idx = [True, False, True] # 布尔索引
filtered = df.iloc[bool_idx, :] # 选择满足条件的行
print(filtered)
```
- 使用布尔列表筛选行或列。
- 输出:
```
A B C
0 1 4 7
2 3 6 9
```
#### (5) **负数索引**
```python
last_row = df.iloc[-1, :] # 获取最后一行
print(last_row)
```
- 负数索引表示从末尾开始计数。
- 输出:
```
A 3
B 6
C 9
Name: 2, dtype: int64
```
---
### 3. **与 `loc` 的区别**
| 特性 | `iloc` | `loc` |
|--------------------|-------------------------------------|------------------------------------|
| 索引方式 | 基于整数位置 | 基于标签 |
| 是否支持切片 | 支持 | 支持 |
| 是否支持布尔索引 | 支持 | 支持 |
例如:
```python
df = pd.DataFrame({'A': [1, 2, 3]}, index=['a', 'b', 'c'])
print(df.iloc[0]) # 按位置索引,输出:A 1
print(df.loc['a']) # 按标签索引,输出:A 1
```
---
### 4. **实际应用场景**
假设有一个学生成绩表:
| 学号 | 姓名 | 数学 | 英语 | 物理 |
|------|------|------|------|------|
| 1 | 张三 | 85 | 90 | 88 |
| 2 | 李四 | 92 | 87 | 95 |
| 3 | 王五 | 78 | 88 | 82 |
如果需要提取所有学生的数学和英语成绩:
```python
math_english = df.iloc[:, [2, 3]] # 提取第2列和第3列
print(math_english)
```
如果需要提取前两名学生的物理成绩:
```python
physics_top2 = df.iloc[:2, 4] # 提取前两行的第4列
print(physics_top2)
```
---
###
阅读全文
相关推荐


















