Python DataFrame中loc与iloc
·
前言:
在 pandas 中,loc 和 iloc 是用于 按标签(label)或位置(integer position)选择数据 的两个核心方法。它们的区别和用法如下:
1. loc —— 按标签选择
-
基于行/列的显式标签(index 或 column name)。
-
包含结束位置(闭区间)。
-
语法:
df.loc[行选择, 列选择]
常用操作:
| 场景 | 代码示例 |
|---|---|
| 选择单行 | df.loc["row_label"] |
| 选择多行 | df.loc[["row1", "row2"]] |
| 选择行和列 | df.loc["row1":"row3", "Age":"City"] |
| 按条件筛选 | df.loc[df["Age"] > 30, ["Name", "City"]] |
import pandas as pd
data = {
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 60, 35],
"City": ["New York", "Paris", "London"]
}
df = pd.DataFrame(data, index=["a", "b", "c"])
# 选择行标签为 'a' 的行
df.loc["a"]
# 选择行标签 'a' 到 'c',列 "Age" 到 "City"
df.loc["a":"c", "Age":"City"]
# 条件筛选:年龄>30的行,仅显示Name列
df.loc[df["Age"] > 35, "Name"]
2. iloc —— 按位置选择
-
基于行/列的整数位置(从0开始)。
-
不包含结束位置(左闭右开区间,和 Python 切片一致)。
-
语法:
df.iloc[行位置, 列位置]
常用操作:
| 场景 | 代码示例 |
|---|---|
| 选择单行 | df.iloc[0] |
| 选择多行 | df.iloc[[0, 2]] |
| 切片选择行 | df.iloc[1:3](选第1和2行) |
| 选择行和列 | df.iloc[0:2, 1:3] |
3. 关键区别
| 特性 | loc |
iloc |
|---|---|---|
| 选择依据 | 标签(label) | 整数位置(position) |
| 区间闭合 | 包含结束位置 | 不包含结束位置 |
| 支持条件筛选 | 是(如 df.loc[df["Age"] > 30]) |
否 |
| 支持负索引 | 否 | 是(如 df.iloc[:, -1] 选最后一列) |
4. 常见错误
loc 用数字索引时:如果 DataFrame 的索引是默认整数(0,1,2...),loc 仍会按标签处理:
df.loc[0] # 如果索引包含0,则返回该行;否则报错
df.iloc[0] # 永远返回第1行
混淆区间闭合规则:
df.loc["a":"c"] # 包含 'a' 和 'c'
df.iloc[0:2] # 包含位置0和1,不包含2
更多推荐
所有评论(0)