![pandas子集选取的三种方法:[]/.loc[]/.iloc[] pandas子集选取的三种方法:[]/.loc[]/.iloc[]](/uploads/article/thumb/20220504102106_6271e312477f2.jpg)
pandas读取Excel、csv文件中的数据时,得到的大多是表格型的二维数据,在pandas中对应的即为DataFrame
数据结构。在处理这类数据时,往往要根据据需求先获取数据中的子集,如某些列、某些行、行列交叉的部分等。可以说子集选取
是一个非常基础、频繁使用的操作,而DataFrame
的子集选取看似简单却有一定复杂性。本文聚焦DataFrame
的子集选取操作逻辑,力求在实战中遇到子集选取操作的需求时"不迷路"。主目录
一、图解
DataFrame
是一种二维的表格型数据结构,每一行/列都有对应的标签
和位置序号
。行列标签、位置序号的对应关系如下图所示:图解DataFrame行列标签、位置序号
- 行标签(也叫行索引:index)默认为(0, 1, 2, …, n)。这里与位置序号恰好一致。
针对DataFrame
的数据结构,pandas提供了三种获取子集的索引器:[]
、.loc[]
、.iloc[]
。
二、整行整列选取:
,选取单个整列
df[]
,选取多个整列
df[[,,]]
,选取整行
df[:]
切片语法也支持字符串的索引标签值,如将"日期"列修改为行索引(index)df1 = df.set_index()
df1[:]
df1[:]
df[]
语法小结:
df[]
语法中,方括号内输入标签名
或列表
选取的是列;而方括号内输入切片
、条件
选取的是行(条件筛选在下文单独介绍)。
df[]
输入切片选取整行时,如果是按照位置序号的切片,左闭右开;按行标签的切片,左闭右闭。
三、行列交叉选取
行列交叉选择,可以通过df.loc[]
和df.iloc[]
两个索引器来实现,两者都需要输入两组参数,先行选择,后列选择。行、列选择都可以是单个标签(序号)、列表和切片。根据需求组合使用,威力强大!df.loc[行选择,列选择]
。参数面向的是标签
。df.iloc[行位置序号,列位置序号]
。参数面向的是位置序号
。
df1.loc[,]
df1.iloc[,]
image-20220503121009320
df1.loc[[,],[,,]]
df1.iloc[[,],[,,]]
image-20220503121028556
df1.loc[:,:]
df1.iloc[:,:]
image-20220503121044354
df1.loc[:,[,]]
df1.iloc[:,[,]]
image-20220503121102550
四、按条件筛选子集
df.[]
、df.loc[]
、df.iloc[]
除了按照行列的标签和位置序号选取子集,还可以使用条件(布尔表达式)筛选子集。
筛选最高温、最低温
将最高温、最低温处理成数值型:df1.loc[:,] = df1[].str.replace(,).astype()
df1.loc[:,] = df1[].str.replace(,).astype()
温度处理成数值获取最高温大于10度,最低温小于6度的数据
df1[(df1[]>) & (df1[]<)]
df1.loc[(df1[]>) & (df1[]<),:]
df1.loc[(df1[]>) & ~(df1[]>=),:]
基于温度的条件筛选
五、函数筛选子集
df1.loc[ df : (df[]>) & (df[]<)]
获取前9天并且空气质量指数为优
df.index.str.startswith() & df[].str.endswith()
df1.loc[queryData , :]
函数查询
小结
在pandast提供的df[]
、df.loc[]
、df.iloc[]
这个三种索引器,前两个更为常用。df[]
在整行或者整列获取时更为方便。整行整列选取可以看作是行列交叉选取的一个特例,故df.loc[]
是更为通用的方法,它支持单个标签值、列表多选、切片区间、条件(布尔)表达式、函数调用五种方式索引子集,功能强大。 声明:本文由用户投稿上传,本站不保证内容的真实与正确性,并且不承担相关法律责任,如有侵权请提供版权资料并联系删除!
编程笔记
»
pandas子集选取的三种方法:[]/.loc[]/.iloc[]