Pandas 数据提取:loc和 iloc的用法详解

Pandas 数据提取:loc和 iloc的用法详解在 Pandas 库中 loc 和 iloc 是两种核心的数据索引方法 用于从 DataFrame 或 Series 中提取特定数据 它们两者均可以使用 df loc iloc 行标签 列标签 索引器的方式来选择数据

欢迎大家来到IT世界,在知识的湖畔探索吧!

Pandas 库中,lociloc 是两种核心的数据索引方法,用于从 DataFrame 或 Series 中提取特定数据。它们两者均可以使用df.loc/iloc[行标签,列标签]索引器的方式来选择数据。

  • 行标签:可以是单个标签、标签列表、标签切片、布尔数组等,用于指定要选择的行。
  • 列标签:同样可以是单个标签、标签列表、标签切片、布尔数组等,用于指定要选择的列。

它们的核心区别在于:

  • loc:基于 标签 (Label) 的索引
  • iloc:基于 整数位置 (Integer Position) 的索引

以下通过代码示例对比演示两个方法的用法。


1. 准备示例数据

import pandas as pd # 创建示例 DataFrame data = { "姓名": ["张三", "李四", "王五", "赵六"], "年龄": [25, 32, 28, 40], "城市": ["北京", "上海", "广州", "深圳"] } df = pd.DataFrame(data, index=["A", "B", "C", "D"]) print("原始数据:") print(df)

欢迎大家来到IT世界,在知识的湖畔探索吧!

运行结果:

复制

欢迎大家来到IT世界,在知识的湖畔探索吧!原始数据: 姓名 年龄 城市 A 张三 25 北京 B 李四 32 上海 C 王五 28 广州 D 赵六 40 深圳

2. 用法详解

2.1 选择单行数据

选择单行数据时,df.loc/iloc[行标签,列标签]索引器指定行标签,不指定列标签,则会选择整行数据

# 选择索引为 'B' 的行,该行的索引编号为1 print("\nloc 选择单行:") print(df.loc["B"]) # loc方法 print(df.iloc[1]) # iloc方法

运行结果:

欢迎大家来到IT世界,在知识的湖畔探索吧!# 上面的两个方法的运行结果均如下 姓名 李四 年龄 32 城市 上海 Name: B, dtype: object

2.2 选择单列数据

选择单列数据时,df.loc/iloc[行标签,列标签]索引器指定行标签为:,指定需选择的列标签,则会选择整列数据

# 选择城市这一列数据,该列的索引编号为2 print("\nloc 选择单列:") print(df.loc[:,"城市"]) print(df.iloc[:,2])

两个方法的运行结果均为:

欢迎大家来到IT世界,在知识的湖畔探索吧!A 北京 B 上海 C 广州 D 深圳 Name: 城市, dtype: object

2.3 选择不连续的多行数据

选择不连续的多行数据时,df.loc/iloc[行标签,列标签]索引器这时的行标签应为一个列表,里面写入需选择的行标签,列标签则不需指定。

# 选择行标签为B和D这两行数据,行标签编号分别为1和3 print(df.loc[["B","D"]]) print(df.iloc[[1,3]])

两个方法的运行结果均为:

欢迎大家来到IT世界,在知识的湖畔探索吧! 姓名 年龄 城市 B 李四 32 上海 D 赵六 40 深圳

2.4 选择连续的多行数据

选择连续的多行数据时,df.loc/iloc[行标签,列标签]索引器这时的行标签应为一个切片器,确定需选择的行的范围,列标签则不需指定。

# 选择行标签为B到D这两行数据,行标签编号为1到3,观察两个方法选择的数据范围是否一致 print(df.loc["B":"D"]) print(df.iloc[1:3])

loc方法运行结果:

欢迎大家来到IT世界,在知识的湖畔探索吧! 姓名 年龄 城市 B 李四 32 上海 C 王五 28 广州 D 赵六 40 深圳

iloc方法运行结果

 姓名 年龄 城市 B 李四 32 上海 C 王五 28 广州

注意:从运行结果来看,loc方法的切片器是左右标签都包含的,而iloc方法的切片器是左包含右不包含的,这点千万要注意。

2.5 选择不连续的多列数据

选择不连续的多行数据时,df.loc/iloc[行标签,列标签]索引器这时的行标签指定为:,列标签为一个列表,里面写入需选择的列标签。

欢迎大家来到IT世界,在知识的湖畔探索吧!# 选择姓名和城市这两列数据,列标签编号分别为0和2 print(df.loc[:,["姓名","城市"]]) print(df.iloc[:,[0,2]])

两个方法的运行结果:

 姓名 城市 A 张三 北京 B 李四 上海 C 王五 广州 D 赵六 深圳

2.6 选择连续的多列数据

选择连续的多列数据时,df.loc/iloc[行标签,列标签]索引器的行标签指定为:,列标签为一个切片器,用于确定需选择的数据范围。

欢迎大家来到IT世界,在知识的湖畔探索吧!# 选择姓名到年龄这两列,列编号为0到1 print(df.loc[:,"姓名":"年龄"]) print(df.iloc[:,0:1])

loc方法运行结果:

 姓名 年龄 A 张三 25 B 李四 32 C 王五 28 D 赵六 40

iloc方法运行结果

欢迎大家来到IT世界,在知识的湖畔探索吧! 姓名 A 张三 B 李四 C 王五 D 赵六

注意:这里依然存在lociloc切片器的有效范围不同的问题,要特别注意。这里iloc方法要选择0到1列数据,应该这样写

print(df.iloc[:,0:2])

这样就可以选择到0到1列数据了。

2.7 选择区域数据

需要选择区域数据时,可以按照需要自由组合列表和切片器来表示行标签和列标签。

欢迎大家来到IT世界,在知识的湖畔探索吧!# 比如需要选择A到C行的姓名和城市的数据,这里行标签是一个连续的行,而城市则不连续的两列 print(df.loc["A":"C",["姓名","城市"]]) print(df.iloc[0:3,[0,2]])

运行结果

 姓名 城市 A 张三 北京 B 李四 上海 C 王五 广州

2.8 布尔数组条件筛选

使用布尔数组进行选择时,布尔数组的长度需要与 DataFrame 的行数或列数相匹配,然后将布尔数组传递给 iloc 来选择满足条件的数据。

欢迎大家来到IT世界,在知识的湖畔探索吧!# 筛选年龄大于28的行,并选择姓名和年龄列 row_mask = df["年龄"] > 28 col_mask = [True, True, False] print(df.loc[row_mask, col_mask])

3. loc与 iloc对比

特性

loc

iloc

索引类型

标签(如 ‘A’, ‘B’)

整数位置(如 0, 1)

切片包含右边界

是(df.loc[‘A’:’C’]

否(df.iloc[0:2]

布尔索引

支持

支持


4. 注意事项

  1. 当 DataFrame 的索引为整数时,loc 会优先识别为标签而非位置
  2. 使用 iloc 时负数表示倒数(如 df.iloc[-1] 选择最后一行)
  3. 混合索引时推荐使用 .values 属性获取 NumPy 数组后再操作

通过灵活组合 lociloc,可以高效完成 Pandas 数据提取任务。建议根据实际数据特征(索引类型、是否需要位置偏移)选择合适的方法。

写在最后:

学会新知识,人生添精彩!从现在开始,告别迷茫和无措,跟着我一步步掌握实用技能,开启全新可能。点击关注,这里有源源不断的干货教程,有耐心细致的指导,还有和你一样努力上进的小伙伴。让我们一起在成长的道路上互相鼓励,共同进步,成为更好的自己!关注后私信我,获取最新Python系列视频教程,包括零基础入门、项目实战、爬虫、全栈、GUI和数据分析等等。点点关注,超过100G的视频课程等你来拿哦!!!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/124051.html

(0)
上一篇 2小时前
下一篇 1小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信