Pandas:DataFrame loc 与 iloc 两者“索引”区别


首先声明本人为小白,只是为了 方便记录自己的学习过程并且监督自己所写的专栏,有什么问题欢迎各位大佬在评论区指正或者讨论。另外,需要引用请注明出处(虽然不是完全原创但是也是自己辛辛苦苦查资料写的啊QAQ),谢谢。

问题导入

遇到这个问题是在iloc中用索引希望获取相应数据时出现了报错:
在这里插入图片描述
可能以前在学到loc和iloc的时候没有注意到(之前也没有太在意索引和单纯数字顺序的区别),且以前用DataFrame时,几乎都是直接重新生成索引,所以索引和顺序是一样的,没有察觉有问题。

下面开始探讨这个问题:
贴张Pandas官网截图:
(https://pandas.pydata.org/docs/reference/frame.html 在Indexing, iteration部分即可看到 )
在这里插入图片描述
可以看到对于loc的描述是:通过标签或者一个布尔数组来得到一些行和列;iloc则是:单纯基于整数位置的索引,用于按位置选择。

DataFrame.loc

前面所述的标签就是Index(即用DataFrame.index可以得到的行便签(The index (row labels) of the DataFrame.))和column(用DataFrame.columns可以得到)。

DataFrame.iloc

前面所述的整数位置就像数数字一样的从0开始按顺序给每一行和每一列都标明了位置,按照这个位置来进行选择。

对比举例

下面以一个很简单明了的例子来说明:
首先创建一个DataFrame:
在这里插入图片描述
设置index为5,6(可以在列边看到),列名为a,b,c(可以行上看到)

假设想要得到2,3这两个数字,那用两个方法需要怎么做呢?

DataFrame.iloc实现

在这里插入图片描述
2,3在第0行,第1,2列,所以用iloc实现如上。

DataFrame.columns.get_indexer()

这里提一下这个方法,这个方法可以在列名很多不方便的时候,通过列名得到位置。
比如上面语句就可修改成:
在这里插入图片描述

DataFrame.loc实现

在这里插入图片描述

2,3所在行索引(index)为5,列名为’b‘,‘c’

DataFrame.index

这里提一下这个属性,如果已知目标所在数字顺序要通过loc实现就可以用DataFrame.index[数字顺序]来实现。
比如上述语句可以修改成:
在这里插入图片描述

总结

位于这两个方法前面位置的参数,区别在于是index还是单纯的数字顺序。并且通过一些方法或属性,可以在一些情况下已知某种而得到另一种。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值