本文主要介绍了pandas loc与iloc用法及区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
共同点
两者都接收两个参数,第一个参数是行的范围,第二个参数是列的范围
不同点
loc函数接收的是行/列的名称,iloc函数接收的是行/列的下标(从0开始)
loc函数在切片时是按闭区间切片的,也就是区间两边都能取到,iloc函数则是按传统的左闭右开的方式切片的
图解:
详细用法
用于展示用法的数据data如下:
loc函数参数类型
单个行名/列名 或 行名/列名的列表
print(data.loc['Chris']) # 等价于data.loc['Chris', :]
输出:
注意上面这种写法返回的是pandas.core.series.Series对象,如果要pandas.core.frame.DataFrame对象可以改成data.loc[['Chris']]
print(data.loc[['Alice', 'David', 'Ellen'], ['Physics', 'Chemistry']])
输出:
列名/行名的切片
print(data.loc['Alice': 'Ellen', 'Math': 'English'])
输出:
布尔型列表(注意长度需要和行数/列数保持一致)
print(data.loc[[False, True, False, False, True, True], [True, False, False, True, True, True]])
输出:
可以返回布尔型列表的表达式(判断或函数)
print(data.loc[data['Chinese'] > 100, 'Chinese'])
输出:
同样的,这种写法返回的是pandas.core.series.Series对象,如果要pandas.core.frame.DataFrame对象可以改成data.loc[data['Chinese'] > 100, ['Chinese']]
print(data.loc[lambda x: x['English'] < 100])
输出:
iloc函数参数类型
单个下标 或 若干下标构成的列表
print(data.iloc[3]) # 等价于print(data.iloc[3, :])
输出:
这种写法返回的是pandas.core.series.Series对象,如果要pandas.core.frame.DataFrame对象可以改成data.iloc[[3]]
print(data.iloc[[1, 2, 4], [2, 4, 5]])
输出:
下标的切片
print(data.iloc[4: 6, 1:])
输出:
布尔型列表(注意长度需要和行数/列数保持一致)
print(data.iloc[[False, True, False, False, True, True], [True, False, False, True, True, True]])
输出:
可以返回合理值的函数
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为偶数的记录:
data.iloc[lambda x: x.index % 2 == 0]
相关推荐
0评论