【pandas】loc与iloc函数区别及用法详解

共同点

两者都接收两个参数,第一个参数是行的范围,第二个参数是列的范围

不同点

  1. loc函数接收的是行/列的名称,iloc函数接收的是行/列的下标(从0开始)
  2. loc函数在切片时是按闭区间切片的,也就是区间两边都能取到,iloc函数则是按传统的左闭右开的方式切片的

图解:

在这里插入图片描述

详细用法

用于展示用法的数据data如下:

在这里插入图片描述

loc函数参数类型

  1. 单个行名/列名 或 行名/列名的列表

    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']])
    

    输出:
    在这里插入图片描述

  2. 列名/行名的切片

    print(data.loc['Alice': 'Ellen', 'Math': 'English'])
    

    输出:
    在这里插入图片描述

  3. 布尔型列表(注意长度需要和行数/列数保持一致)

    print(data.loc[[False, True, False, False, True, True], [True, False, False, True, True, True]])
    

    输出:
    在这里插入图片描述

  4. 可以返回布尔型列表的表达式(判断或函数)

    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函数参数类型

  1. 单个下标 或 若干下标构成的列表

    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]])
    

    输出:
    在这里插入图片描述

  2. 下标的切片

    print(data.iloc[4: 6, 1:])
    

    输出:
    在这里插入图片描述

  3. 布尔型列表(注意长度需要和行数/列数保持一致)

    print(data.iloc[[False, True, False, False, True, True], [True, False, False, True, True, True]])
    

    输出:
    在这里插入图片描述

  4. 可以返回合理值的函数

    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]
    
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值