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

如何使用.loc同时筛选Type 1为Grass且Type 2为Ground?求高效实现方法

多条件筛选DataFrame的方法与优化

嘿,我来帮你搞定这个多条件数据筛选的问题!你原来的代码是单条件筛选,要同时满足Type 1为Grass和Type 2为Ground,有几种直观又高效的写法:

方法一:使用loc与逻辑与&

这是最常用的方式,一定要给每个条件单独加括号(因为==的运算符优先级比&高,不加括号会导致逻辑错误):

filtered_pk = pk.loc[(pk['Type 1'] == 'Grass') & (pk['Type 2'] == 'Ground')]

方法二:使用query()方法(更简洁)

如果你的列名包含空格(比如这里的Type 1、Type 2),需要用反引号把列名括起来,写法更接近自然语言,可读性拉满:

filtered_pk = pk.query("`Type 1` == 'Grass' and `Type 2` == 'Ground'")

更高效的优化技巧

如果你的数据集很大,想要进一步提升筛选速度,可以试试这两个技巧:

  • 将分类列转为category类型:如果Type 1和Type 2的取值重复率很高,提前把它们转为类别类型能大幅降低内存占用,同时加速筛选操作:
    pk['Type 1'] = pk['Type 1'].astype('category')
    pk['Type 2'] = pk['Type 2'].astype('category')
    
  • 优先用向量化操作:绝对不要用Python循环逐行判断,pandas的loc和query都是底层基于C实现的向量化操作,速度比循环快几个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:47:38