dataframe变量,对比loc/iloc方法,at/iat方法有何不同之处?
发布于 作者:苏南大叔 来源:程序如此灵动~

访问dataframe
变量的内部成员的时候,可以使用.loc[]
和.iloc[]
两个方法,这两个方法都可以设置获取一行或者一列或者某个具体位置的成员。然而,还有另外一对方法.at[]
和.iat[]
,和.loc[]
/iloc[]
十分类似。也可以用来定位dataframe
变量的一些成员。

苏南大叔的“程序如此灵动”博客,拒绝文章批量复制抄袭。本文测试环境:win10
,python@3.11.0
,numpy@1.24.2
,pandas@1.5.3
。本文探讨dataframe
如何利用.at[]
和.iat[]
定位元素。
dataframe的.loc[]和.iloc[]
dataframe
变量的.loc[]
和.iloc[]
两个方法,在前面的文章里面有过描述:
总的思路就是:
.loc[]
,使用被定义的便签信息,可以使用:
来定位一组数据。.iloc[]
,使用原始的数字索引,也可以使用:
来定位一组数据。
测试代码:
输出:

dataframe的.at[]和.iat[]
dataframe
变量的.at[]
和.iat[]
两个方法,基本上是类似.loc[]
和.iloc[]
两个方法的。
.at[]
,使用被定义的便签信息,可以使用:
来定位一组数据。.iat[]
,使用原始的数字索引,但是【不可以使用:
】来定位一组数据。
参考代码:
输出:

.at[]只能设置一组,不能读取一组
.at[]
方法挺邪门的,
- 可以用于设置或读取某个具体位置的成员。
- 也能【设置】成组数据,但是试图【读取成组数据】的时候,就会报错了。
测试代码:
报错信息如下:
需要特别声明的是:与此同时,.at[]
是可以使用:
操作符的,这是和网上其它的教程不一样的地方。

如果说.iat[]
和.iloc[]
有着很明显的差异(是否可以选择一组数据),那么.at[]
和.loc[]
也可以用于获取多个数据(例如一列和一行),那么,.at[]
和.loc[]
难道是等同的函数?测试代码:
可见,两者还是有细微区别的,区别就在于.at[]
+冒号的组合,不能读取,只能设置。

.iat[]不能定位一组数据
.iat[]
,里面不能使用:
操作符,也就是说不能定位到多条数据,只能定位到某个具体的值。
测试代码:
试图使用:
操作符的,会得到下面的错误提示信息:

表格对比总结
函数 | 参数 | 读取一个 | 设置一个 | 读取一组 | 设置一组 |
---|---|---|---|---|---|
.loc[] | 使用标签名 | 可以 | 可以 | 可以 | 可以 |
.iloc[] | 使用数字索引 | 可以 | 可以 | 可以 | 可以 |
.at[] | 使用标签名 | 可以 | 可以 | 报错 | 可以 |
.iat[] | 使用数字索引 | 可以 | 可以 | 报错 | 报错 |
既生瑜何生亮,既然loc[]
和iloc[]
非常好用,为啥还做一个看起来一样的.at[]
和iat[]
方法呢?况且这个.at[]
和iat[]
明显不如loc[]
和iloc[]
好用。个人建议,还是老老实实的使用.loc[]
或者.iloc[]
比较好。
结束语
大家对待这个.at[]
和.iat[]
方法,有什么独特的见解么?欢迎留言。


