前言:       

         在 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

 

 

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐