python之loc与iloc的用法及说明
更新时间:2025年06月27日 09:02:06 作者:我不是少爷.
这篇文章主要介绍了python之loc与iloc的用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
loc 是 Pandas 中用于 基于标签(label-based)的索引选择方法,专门用于按行/列标签精准定位和操作 DataFrame 或 Series 中的数据。
以下是详细解析:
一、核心功能
1. 基本语法
df.loc[行标签选择, 列标签选择]
- 行标签选择:可以是单个标签、标签列表、切片(如
"a":"d")或布尔条件 - 列标签选择:同上,支持标签筛选
2. 特性
- 标签优先:索引基于行/列的名称(字符串或数字标签),而非位置
- 闭区间:切片包含起始和结束标签(与 Python 常规切片不同)
- 支持高级操作:布尔索引、条件过滤、函数调用等
二、典型使用场景
1. 精确提取单值
# 获取行标签为2,列标签为'Age'的值 df.loc[2, 'Age']
2. 选择行范围 + 多列
# 选取行标签从'user1'到'user3',列标签'Name'和'Score' df.loc['user1':'user3', ['Name', 'Score']]
3. 条件筛选
# 选择所有年龄大于30的行,并显示'City'列 df.loc[df['Age'] > 30, 'City']
4. 修改数据
# 将行标签为5的'Status'列值改为'active' df.loc[5, 'Status'] = 'active'
三、与 iloc 的对比
| 特性 | loc | iloc |
|---|---|---|
| 索引类型 | 标签(字符串或数字) | 纯整数位置(0-based) |
| 切片区间 | 闭区间(包含两端) | 左闭右开(Python 标准切片) |
| 允许输入类型 | 标签、布尔数组、条件表达式 | 整数、整数列表、整数切片 |
| 示例 | df.loc['a':'c', 'Name'] | df.iloc[0:3, 1] |
四、避坑指南
1. 避免链式赋值
# ❌ 可能引发 SettingWithCopyWarning df['Age'][df['Name'] == 'Alice'] = 25 # ✅ 规范写法 df.loc[df['Name'] == 'Alice', 'Age'] = 25
2. 处理混合索引
当 DataFrame 的索引是整数时,loc 和 iloc 可能产生歧义:
df = pd.DataFrame({'A': [1,2,3]}, index=[10, 20, 30])
# 按标签选择(查找标签为1的行)
df.loc[10] # ✅ 返回第10标签行
# 按位置选择(查找第0行)
df.iloc[0] # ✅ 返回第10标签行(位置0)
五、高级用法示例
1. 使用函数筛选
# 选择索引以'2023'开头的行
df.loc[lambda x: x.index.str.startswith('2023')]
2. 多条件复合筛选
# 选择年龄在20-30岁且城市为北京的行 df.loc[(df['Age'] >= 20) & (df['City'] == '北京')]
3. 跨列计算赋值
# 当Score列大于90时,Status设为'A+' df.loc[df['Score'] > 90, 'Status'] = 'A+'
六、总结
- 核心作用:基于标签精准操作数据(查、改、删)
- 优势:代码可读性高,支持复杂条件筛选
- 适用场景:数据清洗、条件筛选、动态计算等
# 典型工作流示例 cleaned_data = df.loc[df['Quality'] > 0.8, ['ID', 'Value']] # 筛选高质量数据 cleaned_data.loc[:, 'Value'] *= 100 # 批量修改选中列的值
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Python实现的查询mysql数据库并通过邮件发送信息功能
这篇文章主要介绍了Python实现的查询mysql数据库并通过邮件发送信息功能,可实现Python针对mysql的查询与宕机信息通过邮件发送的相关操作技巧,需要的朋友可以参考下2018-05-05
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
这篇文章主要介绍了Python os模块中的isfile()和isdir()函数均返回false问题解决方法,返回false的原因是路径使用了相对路径,使用绝对路径就可以解决这个问题,需要的朋友可以参考下2015-02-02
Python turtle绘图教程之七段数码管显示数字和字母
这篇文章主要给大家介绍了关于Python turtle绘图教程之七段数码管显示数字和字母的相关资料,Python是一种流行的编程语言,可用于编写各种类型的程序,在数码管显示器上数字8由7条不同的线条组成,需要的朋友可以参考下2023-10-10


最新评论