Pandas中loc与iloc读取指定行列数据详解
本文详细解析Pandas库中loc和iloc两种核心数据提取方法。loc基于标签索引,支持通过行列名、条件筛选及区域切片获取数据;iloc基于整数位置索引,适用于按物理位置精确提取。文章通过具体代码示例演示了单行、单列、区域及条件读取的操作,并强调切片时左闭右开的区间特性,帮助开发者高效处理DataFrame数据。
在实际数据处理工作中,经常需要定位并提取特定的行或列数据。本文将介绍在Pandas库中常用的两种索引方法:loc和iloc,并对比它们的使用场景与差异。
loc方法:依据行索引名称或列标签进行数据索引。
iloc方法:依据行和列的整数索引位置进行数据定位。
为了便于后续演示,首先构建一个包含多行多列的DataFrame对象,并生成相应的测试数据。
import pandas as pd
import numpy as np
# 生成DataFrame
data = pd.DataFrame(np.arange(30).reshape((6,5)),
columns=['A','B','C','D','E'])
# 写入本地
data.to_excel("D:\\实验数据\\data.xls", sheet_name="data")
print(data)
1. loc方法详解
loc方法的核心功能是通过指定的行标签或列名称来定位并获取目标数据值。
(1)获取第二行的数据内容
# 索引第二行的值,行标签是“1”
data1 = data.loc[1]
运行结果如下所示:

备注: #下面两种语法效果相同 data.loc[1] == data.loc[1,:]
(2)获取第二列的全部数据
# 读取第二列全部值
data2 = data.loc[ : ,"B"]运行结果如下所示:

(3)同时指定行与列进行交叉读取
# 读取第1行,第B列对应的值
data3 = data.loc[ 1, "B"]运行结果如下所示:

(4)读取DataFrame中指定的矩形区域
# 读取第1行到第3行,第B列到第D列这个区域内的值
data4 = data.loc[ 1:3, "B":"D"]运行结果如下所示:

(5)基于特定条件进行数据筛选读取
# 读取第B列中大于6的值
data5 = data.loc[ data.B > 6] #等价于 data5 = data[data.B > 6]运行结果如下所示:

(6)支持对行或列进行切片操作
# 进行切片操作,选择B,C,D,E四列区域内,B列大于6的值
data1 = data.loc[ data.B >6, ["B","C","D","E"]]运行结果如下所示:

2. iloc方法详解
iloc方法通过整数索引位置(格式为[index, columns])来精确查找和提取数据。
(1)获取第二行的数据内容
# 读取第二行的值,与loc方法一样
data1 = data.iloc[1]
# data1 = data.iloc[1, :],效果与上面相同运行结果如下所示:

(2)获取第二列的全部数据
# 读取第二列的值
data1 = data.iloc[:, 1]运行结果如下所示:

(3)同时指定行与列进行交叉读取
# 读取第二行,第二列的值
data1 = data.iloc[1, 1]运行结果如下所示:

(4)对指定范围进行切片操作
# 按index和columns进行切片操作
# 读取第2、3行,第3、4列
data1 = data.iloc[1:3, 2:4]运行结果如下所示:

注意事项:
切片区间遵循左闭右开原则。例如在代码data.iloc[1:3, 2:4]中,第4行和第5列的数据无法被提取到。
补充:利用loc和iloc提取全部数据
In[8]:data.loc[:,:] #取A,B,C,D列的所有行
Out[8]:
A B C D
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
In[9]:data.iloc[:,:] #取第0,1,2,3列的所有行
Out[9]:
A B C D
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
d 12 13 14 15
利用loc函数,可以根据特定数据条件提取包含该数据的整行记录。
In[10]: data.loc[data['A']==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
Out[10]:
A B C D
a 0 1 2 3总结
以上就是关于利用Pandas读取特定行列数据的loc和iloc用法总结,更多相关Pandas读取列行数据之loc和iloc内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









