python之loc与iloc的用法及说明 python中loc

python之loc与iloc的用法及说明 python中loc

目录
  • 一、核心功能
    • 1. 基本语法
    • 2. 特性
  • 二、典型使用场景
    • 1. 精确提取单值
    • 2. 选择行范围 + 多列
    • 3. 条件筛选
    • 4. 修改数据
  • 三、与 iloc 的对比
    • 四、避坑指南
      • 1. 避免链式赋值
      • 2. 处理混合索引
    • 五、高质量用法示例
      • 1. 使用函数筛选
      • 2. 多条件复合筛选
      • 3. 跨列计算赋值
    • 六、拓展资料

      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[&039;a&039;:&039;c&039;, &039;Name&039;] df.iloc[0:3, 1]

      四、避坑指南

      1. 避免链式赋值

      &x274c; 可能引发 SettingWithCopyWarningdf[‘Age’][df[‘Name’] == ‘Alice’] = 25 &x2705; 规范写法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] &x2705; 返回第10标签行 按位置选择(查找第0行)df.iloc[0] &x2705; 返回第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数据分析基础之pandas中loc()与iloc()的介绍与区别介绍
      • Pythonpandas中的iloc使用
      • python?pandas怎样使用loc和iloc读取行数据或列数据
      • python中pandas库的iloc函数用法解析
      • Python?Pandas中loc和iloc函数的基本用法示例
      • pythoniloc和loc切片的实现
      • Python进修之.iloc与.loc的区别、联系和用法
      版权声明

      返回顶部