Pandas索引器 loc 和 iloc 比较及代码示例

 更新时间:2026年01月08日 09:57:29   作者:Humbunklung  
本文主要介绍了Pandas索引器 loc 和 iloc 比较及代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Pandas 索引器 loc 和 iloc 比较及代码示例

以下是针对 Pandas 中 lociloc 的深度对比分析及代码示例,结合核心差异、使用场景和底层机制展开说明:

一、核心差异解析

特性loc (标签索引)iloc (位置索引)
索引类型行/列标签(字符串、日期等)行/列整数位置(从0开始)
切片行为包含结束标签(闭区间)不包含结束位置(左闭右开)
布尔索引直接支持条件表达式(更直观)需先生成布尔数组再操作
索引灵活性支持非整数标签(如字符串索引)仅支持整数位置

二、关键场景代码示例

1. 基础索引对比

import pandas as pd

# 创建带自定义索引的DataFrame
data = {"Age": [25, 32, 28, 40], "City": ["北京", "上海", "广州", "深圳"]}
df = pd.DataFrame(data, index=["Alice", "Bob", "Charlie", "David"])

# loc按标签选择 → 获取Bob行所有列
print(df.loc["Bob"])  # 输出: Age 32, City 上海

# iloc按位置选择 → 获取第1行所有列(索引0为Alice)
print(df.iloc[1])     # 输出: 同上(Bob行)

Age     32
City    上海
Name: Bob, dtype: object
Age     32
City    上海
Name: Bob, dtype: object

2. 切片行为差异

# loc切片包含结束标签 → 选择Alice到Charlie行
print(df.loc["Alice":"Charlie"])  # 输出3行数据

# iloc切片不包含结束位置 → 选择0至1行(不含索引2)
print(df.iloc[0:2])               # 仅输出Alice和Bob行

         Age City
Alice     25   北京
Bob       32   上海
Charlie   28   广州
       Age City
Alice   25   北京
Bob     32   上海

3. 布尔索引使用

# loc直接条件筛选 → 年龄>30的行
print(df.loc[df["Age"] > 30])     # 输出Bob和David行

# iloc需分两步 → 先生成掩码再选择
mask = df["Age"] > 30
print(df.iloc[mask.values])        # 需用.values转为数组

       Age City
Bob     32   上海
David   40   深圳
       Age City
Bob     32   上海
David   40   深圳

4. 混合行列选择

# loc选择多列 → 所有行 + "City"列
print(df.loc[:, "City"])           # 输出城市列所有数据

# iloc选择连续列 → 所有行 + 第1列(列索引从0开始)
print(df.iloc[:, 1])               # 同上(City列位置为1)

Alice      北京
Bob        上海
Charlie    广州
David      深圳
Name: City, dtype: object
Alice      北京
Bob        上海
Charlie    广州
David      深圳
Name: City, dtype: object

三、高级技巧与性能

1. 函数式索引

# loc + lambda → 筛选Age为偶数的行
print(df.loc[lambda x: x["Age"] % 2 == 0])  # 输出Bob(32), David(40)

# iloc + lambda → 筛选索引位置为奇数的行
print(df.iloc[lambda x: [i for i in range(len(x)) if i % 2 == 1]])  # 输出Bob行

         Age City
Bob       32   上海
Charlie   28   广州
David     40   深圳
       Age City
Bob     32   上海
David   40   深圳

2. 性能优化建议

  • 大型数据集:优先用 iloc(整数位置计算更快)
  • 复杂索引:用 loc 避免位置计算错误(如时间序列索引)
  • 混合场景:若需标签+位置混合索引,先重置索引再用 iloc
df_reset = df.reset_index()
df_reset.iloc[1:3, 0:2]  # 选择第1-2行,第0-1列
indexAge
1Bob32
2Charlie28

四、特殊场景处理

1. 整数索引陷阱

当行索引为整数时,loc 会优先识别为标签而非位置:

df_int_index = pd.DataFrame({"Value": [10, 20]}, index=[1, 2])

# loc尝试按标签访问 → 报错(无标签0)
# df_int_index.loc[0]  # KeyError

# iloc按位置访问 → 正常
print(df_int_index.iloc[0])  # 输出索引1的行(Value:10)

Value    10
Name: 1, dtype: int64

2. 负索引支持

iloc 支持负数索引(从末尾计数):

print(df.iloc[-1])  # 输出最后一行(David)

Age     40
City    深圳
Name: David, dtype: object

五、总结:选择策略

场景推荐方法原因
已知行/列标签(如列名为"Age")loc直接标签访问,语义清晰
按行号/列号操作(如前三行)iloc位置计算高效
时间序列数据(日期索引)loc避免位置漂移(如df.loc["2023":"2025"])
大数据集遍历iloc整数位置操作速度更快

最佳实践:优先用 loc 保证可读性,性能敏感时切 iloc。始终通过 print(df.head()) 确认数据结构,避免索引混淆。

到此这篇关于Pandas索引器 loc 和 iloc 比较及代码示例的文章就介绍到这了,更多相关Pandas索引器 loc 和 iloc内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用lambda表达式对字典排序操作示例

    Python使用lambda表达式对字典排序操作示例

    这篇文章主要介绍了Python使用lambda表达式对字典排序操作,结合实例形式分析了lambda表达式实现字典按键排序、按值排序、多条件排序相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • 使用python批量转换文件编码为UTF-8的实现

    使用python批量转换文件编码为UTF-8的实现

    这篇文章主要介绍了使用python批量转换文件编码为UTF-8的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python数字图像处理实现直方图与均衡化

    python数字图像处理实现直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素。这篇文章主要介绍了python数字图像处理实现直方图与均衡化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Python操作SQLite简明教程

    Python操作SQLite简明教程

    这篇文章主要介绍了Python操作SQLite简明教程,简单明了的入门教程,包含连接、建表、增删修查等例子,需要的朋友可以参考下
    2014-07-07
  • Keras:Unet网络实现多类语义分割方式

    Keras:Unet网络实现多类语义分割方式

    本文主要利用U-Net网络结构实现了多类的语义分割,并展示了部分测试效果,希望对你有用!
    2020-06-06
  • Python检查 云备份进程是否正常运行代码实例

    Python检查 云备份进程是否正常运行代码实例

    这篇文章主要介绍了Python检查 云备份进程是否正常运行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • TensorFlow进阶学习定制模型和训练算法

    TensorFlow进阶学习定制模型和训练算法

    本文将为你提供关于 TensorFlow 的中级知识,你将学习如何通过子类化构建自定义的神经网络层,以及如何自定义训练算法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Python中requests库的基本概念与具体使用方法

    Python中requests库的基本概念与具体使用方法

    requests库是用python编写的基于urllib,requests唯一的一个非转基因的Python HTTP库,下面这篇文章主要给大家介绍了关于Python中requests库的基本概念与具体使用方法,需要的朋友可以参考下
    2022-08-08
  • Python数据可视化探索实例分享

    Python数据可视化探索实例分享

    这篇文章主要介绍了Python数据可视化探索实例分享,数据可视化是指用图形或表格的方式来呈现数据,关于更多相关介绍需要的小伙伴可以参考下面文章的具体内容
    2022-05-05
  • python调用sikulixide库实现自动化脚本方法实例

    python调用sikulixide库实现自动化脚本方法实例

    SikuliX IDE是一个基于图像识别的自动化测试工具,主要用于UI测试,它本身并不直接支持文本文件读取操作,因为它主要用于处理屏幕上的图片和截图,这篇文章主要介绍了python调用sikulixide库实现自动化脚本的相关资料,需要的朋友可以参考下
    2025-11-11

最新评论