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

如何优化DataFrame数据过滤操作 提升大规模数据集筛选效率

DataFrame按指定列表过滤的优化方案

基础优化(性能提升最明显,写法最简洁)

pandas内置的isin()是底层C实现的矢量化操作,相比你写的多|逐条件判断,在十万级以上行的DataFrame上性能可提升数倍到数十倍,还能避免手动写多个判断条件的语法错误,写法如下:

# 先修正原代码的语法错误:c3和d2之间漏了逗号
u_choices = ['a1', 'b1', 'b2', 'c3', 'd2', 'e4']
# 一行完成过滤,和原需求逻辑完全一致
df1 = df2[df2['user_option'].isin(u_choices)]

进阶极致优化(适用于百万行以上的超大数据集)

如果数据量极大,且user_option列重复值占比高,可以选择以下两种方式进一步提速:

  • 将目标列转为分类类型(category)后再过滤,降低底层计算量:
df2['user_option'] = df2['user_option'].astype('category')
df1 = df2[df2['user_option'].isin(u_choices)]
  • 直接调用numpy底层判断方法,跳过pandas层的额外开销:
import numpy as np
df1 = df2[np.in1d(df2['user_option'].values, u_choices)]

你原有的写法除性能问题外,还容易出现手误:比如条件里的(df2['user_option'] == 'a2d2)漏了右引号,u_choices里的'c3' 'd2'漏了逗号,使用isin()方法只需维护好u_choices列表即可避免这类低级错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:24:03