共同点
两者都接收两个参数,第一个参数是行的范围,第二个参数是列的范围
不同点
-
loc
函数接收的是行/列的名称,iloc
函数接收的是行/列的下标(从0开始) -
loc
函数在切片时是按闭区间切片的,也就是区间两边都能取到,iloc
函数则是按传统的左闭右开的方式切片的
图解:
详细用法
用于展示用法的数据data
如下:
loc函数参数类型
单个行名/列名 或 行名/列名的列表
1
|
print (data.loc[ 'Chris' ]) # 等价于data.loc['Chris', :] |
输出:
注意上面这种写法返回的是pandas.core.series.Series
对象,如果要pandas.core.frame.DataFrame
对象可以改成data.loc[['Chris']]
1
|
print (data.loc[[ 'Alice' , 'David' , 'Ellen' ], [ 'Physics' , 'Chemistry' ]]) |
输出:
列名/行名的切片
1
|
print (data.loc[ 'Alice' : 'Ellen' , 'Math' : 'English' ]) |
输出:
布尔型列表(注意长度需要和行数/列数保持一致)
1
|
print (data.loc[[ False , True , False , False , True , True ], [ True , False , False , True , True , True ]]) |
输出:
可以返回布尔型列表的表达式(判断或函数)
1
|
print (data.loc[data[ 'Chinese' ] > 100 , 'Chinese' ]) |
输出:
同样的,这种写法返回的是pandas.core.series.Series
对象,如果要pandas.core.frame.DataFrame
对象可以改成data.loc[data['Chinese'] > 100, ['Chinese']]
1
|
print (data.loc[ lambda x: x[ 'English' ] < 100 ]) |
输出:
iloc函数参数类型
单个下标 或 若干下标构成的列表
1
|
print (data.iloc[ 3 ]) # 等价于print(data.iloc[3, :]) |
输出:
这种写法返回的是pandas.core.series.Series
对象,如果要pandas.core.frame.DataFrame
对象可以改成data.iloc[[3]]
1
|
print (data.iloc[[ 1 , 2 , 4 ], [ 2 , 4 , 5 ]]) |
输出:
下标的切片
1
|
print (data.iloc[ 4 : 6 , 1 :]) |
输出:
布尔型列表(注意长度需要和行数/列数保持一致)
1
|
print (data.iloc[[ False , True , False , False , True , True ], [ True , False , False , True , True , True ]]) |
输出:
可以返回合理值的函数
1
|
data.iloc[ lambda x: x.index > 'Bob' ] |
输出:
解释一下,这里传入lambda
匿名函数的x
是整个DataFrame
,所以x.index
就是['Alice', 'Bob', 'Chris', 'David', 'Ellen', 'Frank']
,大于Bob
即取字典序大于Bob
的那些index;这里的函数意义不大,真正有用的是当DataFrame
的index是整数的时候你可以通过这种方式选取满足某种要求的index,比如只选那些index为偶数的记录:
1
|
data.iloc[ lambda x: x.index % 2 = = 0 ] |
到此这篇关于pandas loc与iloc用法及区别的文章就介绍到这了,更多相关pandas loc iloc内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_43298886/article/details/112632237