loc iloc
时间: 2025-05-10 18:37:49 浏览: 14
### Pandas 中 `loc` 和 `iloc` 的区别
在 Pandas 库中,`loc` 和 `iloc` 是两种用于数据选择的重要方法。它们的主要差异在于索引方式的不同。
#### 使用场景与定义
- **`loc`**: 基于标签(label-based)的选择器,可以用来访问一组行和列,依据的是 DataFrame 或 Series 的索引标签[^3]。
- **`iloc`**: 基于位置(position-based)的选择器,主要用于按整数位置来选取数据,类似于 Python 列表的切片操作[^1]。
#### 数据选择示例
以下是具体的使用例子:
##### 1. 使用 `loc`
假设有一个名为 `df` 的 DataFrame,其索引为字符串类型的日期,如下所示:
```python
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
index = ['2023-01-01', '2023-01-02', '2023-01-03']
df = pd.DataFrame(data, index=index)
print(df)
```
输出结果为:
```
A B
2023-01-01 1 4
2023-01-02 2 5
2023-01-03 3 6
```
如果要通过标签选择某一行的数据,则可使用 `loc`:
```python
row_data = df.loc['2023-01-02'] # 根据索引标签获取第二行
print(row_data)
```
这会返回该行的内容作为 Series 对象:
```
A 2
B 5
Name: 2023-01-02, dtype: int64
```
##### 2. 使用 `iloc`
同样的 DataFrame 下,可以通过整数位置来选择数据。例如,选择第 1 行(注意:Python 索引从零开始),则可以用 `iloc` 实现:
```python
row_data_by_position = df.iloc[1]
print(row_data_by_position)
```
同样得到的结果是:
```
A 2
B 5
Name: 2023-01-02, dtype: int64
```
#### 复杂情况下的对比
当需要同时选择多行或多列时,两者的语法也有所不同。比如,选择前两行以及第一列的数据:
- 使用 `loc` 需指定标签范围;
- 而 `iloc` 可以直接用整数表示范围。
```python
# 使用 loc 进行复杂选择
subset_loc = df.loc[['2023-01-01', '2023-01-02'], ['A']]
print(subset_loc)
# 使用 iloc 进行复杂选择
subset_iloc = df.iloc[:2, :1]
print(subset_iloc)
```
上述代码分别打印出相同的部分子集数据。
#### 性能考量
对于大规模数据处理而言,由于 `iloc` 不依赖于可能变化的标签结构而仅关注固定的位置关系,在某些情况下可能会更高效一些[^2]。
---
### 结论
综上所述,`loc` 更适合已知确切标签名称的情况;而当你清楚知道所需元素的具体位置而非具体名字的时候,应该优先考虑采用 `iloc` 来完成相应的任务。
阅读全文
相关推荐


















