You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

过滤DataFrame时,使用loc或iloc是否存在适用场景?

Pandas过滤场景下loc/iloc的选择说明

你的理解不完全准确,过滤DataFrame时,仍存在需要明确选择loc或iloc的场景,具体拆解如下:

  • loc的不可替代性场景
    df[df.B == 9]确实是df.loc[df.B == 9]的语法糖,但仅适用于仅过滤行且返回整行数据的简单场景。当需要同时筛选行和列时,df[]无法实现,必须使用loc:
    比如要筛选B列等于9的行,同时只保留A、C两列,只能写:

    df.loc[df.B == 9, ['A', 'C']]
    

    此外,loc的语义更清晰——明确基于标签操作,在复杂业务逻辑的代码中使用,能大幅提升可读性,避免df[]同时支持列名、行布尔索引带来的歧义。

  • iloc的专属场景
    iloc是基于位置索引的操作,当过滤逻辑依赖行/列的位置序号时,必须使用iloc,无法用df[]或loc替代:
    比如筛选前10行中位置为偶数的行:

    df.iloc[range(0, 10, 2)]
    

    再比如需要根据布尔数组的位置进行过滤(而非标签),也可以用iloc配合numpy数组实现:

    mask = df.B == 9
    df.iloc[mask.to_numpy()]
    
  • 总结
    简单行过滤场景下,df[]和loc效果一致,但涉及行列同时筛选、基于位置的过滤时,必须明确选择loc或iloc。从代码可读性和规范性角度,推荐优先使用loc处理标签类过滤,iloc处理位置类过滤,减少歧义。

内容的提问来源于stack exchange,提问作者variable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:45:39