RSS
菜单

Pandas 中 loc 和 iloc 有什么区别?什么时候用哪个?

一句话:loc 按标签(名字/条件)取,iloc 按整数位置取。

import pandas as pd
df = pd.DataFrame({"city": ["北京", "上海", "广州", "深圳"],
                   "sales": [100, 200, 150, 180]},
                  index=["a", "b", "c", "d"])

df.loc["b"]            # 取标签为 "b" 的行
df.loc[["a", "c"]]     # 取多行
df.loc["a":"c"]        # 标签切片,**含终点** c
df.loc[df["sales"] > 150]   # 布尔条件筛选(最常用)
df.loc["a", "city"]    # 行标签 + 列名

df.iloc[1]             # 取第 1 行(从 0 数)
df.iloc[0:2]           # 位置切片,**不含终点**(只取 0,1 两行)
df.iloc[:, 1]          # 第 1 列
df.iloc[[0, 2], [0, 1]]

三个关键区别:

| 维度 | loc | iloc |

|---|---|---|

| 索引依据 | 标签 / 布尔条件 | 整数位置 |

| 切片终点 | 包含 | 不包含 |

| 报错 | 标签不存在 KeyError | 位置越界 IndexError |

什么时候用哪个:

1. 条件筛选、按列名取值:永远用 loc(df.loc[df["age"] > 18])。

2. 取前几行、按位置遍历:用 iloc(df.iloc[:5])。

3. 修改数据:推荐 `loc` 赋值,能避免 SettingWithCopyWarning(见第 33 题)。

坑提醒: 索引是数字时最容易混:df.loc[0] 取标签为 0 的行,df.iloc[0] 取第 0 行——先 df.reset_index() 看清索引是什么,再决定用哪个。

下载推广海报

圈内讨论推广海报

《Pandas 中 loc 和 iloc 有什么区别?什么时候用哪个?》完整推广海报
一起交流

全部回复 0

分享经验,让问题更进一步

讨论,从你的观点开始

还没有回复,欢迎补充经验或分享不同的思路。