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

如何实现基于指定分类动态过滤DataFrame的高效函数

高效筛选DataFrame指定分类行的实现方案

在pandas中,向量化操作是处理数据集的最优选择,其中isin()方法是筛选指定分类行的最高效方式——它内部基于哈希表实现匹配,时间复杂度为O(n),远优于循环遍历的O(n*k)(k为分类数量),尤其适合大规模数据集。

完整实现代码

import seaborn as sns
import pandas as pd

# 加载数据集
diamonds_df = sns.load_dataset('diamonds')

def makenewdf(df, cuts):
    # 处理单个字符串输入的情况,统一转为列表格式
    if isinstance(cuts, str):
        cuts = [cuts]
    # 用isin生成布尔索引,筛选目标行
    return df[df['cut'].isin(cuts)]

使用示例

  • 筛选单个分类:
    good_diamonds = makenewdf(diamonds_df, 'Good')
    
  • 筛选多个分类:
    selected_diamonds = makenewdf(diamonds_df, ['Good', 'Very Good', 'Ideal'])
    

为什么这是最高效的?

  • isin()是pandas原生优化的向量化方法,避免了Python层面的循环开销,底层用C实现匹配逻辑
  • 哈希表匹配机制确保即使分类数量多,也能快速完成行匹配
  • 返回的是原DataFrame的视图(而非副本,除非必要),内存占用更低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:55:57