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 的对比

特性lociloc
索引类型标签(字符串或数字)纯整数位置(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 的索引是整数时,lociloc 可能产生歧义:

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  # 批量修改选中列的值

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Dataframe的行名及列名排序问题

    Dataframe的行名及列名排序问题

    这篇文章主要介绍了Dataframe的行名及列名排序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python itchat实现调用微信接口的第三方模块方法

    python itchat实现调用微信接口的第三方模块方法

    这篇文章主要介绍了python itchat实现调用微信接口的第三方模块方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python动态配置管理Dynaconf的实现示例详解

    Python动态配置管理Dynaconf的实现示例详解

    这篇文章主要为大家介绍了Python动态配置管理Dynaconf实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Python基于opencv实现的人脸识别(适合初学者)

    Python基于opencv实现的人脸识别(适合初学者)

    OpenCV是一个基于BSD许可开源发行的跨平台计算机视觉库,下面这篇文章主要给大家介绍了关于Python基于opencv实现的人脸识别,文中通过实例代码介绍的非常详细,本文的教程非常适合初学者,需要的朋友可以参考下
    2022-03-03
  • Python中的Xpath和lxml库的使用详解

    Python中的Xpath和lxml库的使用详解

    这篇文章主要介绍了Python中的Xpath和lxml库的使用详解,XPath即 XML路径语言,它是一门在 XML 文档中查找信息的语言,最初被用来搜寻 XML 文档,同时它也适用于搜索 HTML 文档,因此,在爬虫过程中可以使用 XPath 来提取相应的数据,需要的朋友可以参考下
    2023-12-12
  • 理解python中装饰器的作用

    理解python中装饰器的作用

    python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用python装饰器的好处就是在不用更改原函数的代码前提下给函数增加新的功能
    2021-07-07
  • Python中 * 号的用法总结

    Python中 * 号的用法总结

    Python中的 *号是一个特殊的符号,在其他编程语言中,它最广为人知的用途就是作为乘法运算的符号,本文总结了Python中*号的所有用途,希望对大家有所帮助
    2023-11-11
  • python爬取微信公众号文章的方法

    python爬取微信公众号文章的方法

    这篇文章主要为大家详细介绍了python爬取微信公众号文章的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Python中OTSU算法的原理与实现详解

    Python中OTSU算法的原理与实现详解

    OTSU算法是大津展之提出的阈值分割方法,又叫最大类间方差法,本文主要为大家详细介绍了OTSU算法的原理与Python实现,感兴趣的小伙伴可以了解下
    2023-12-12
  • Python批量获取基金数据的方法步骤

    Python批量获取基金数据的方法步骤

    这篇文章主要介绍了Python批量获取基金数据的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论