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

如何高效筛选多DataFrame的10-90分位数数据并保留符合条件行?

多变量分位数区间筛选的简洁实现方案

你可以通过封装复用函数+Pandas批量处理的方式,替代手动逐个变量计算分位数的繁琐操作,直接一次性筛选出所有变量都处于10th-90th分位数区间的行。

简洁实现代码

import pandas as pd

def filter_quantile_range(df, target_cols=["Hardness [N]", "Thickness [mm]", "Weight [mg]", "Diameter [mm]"], q_low=0.1, q_high=0.9):
    # 一次性获取所有目标变量的上下分位数
    quantile_vals = df[target_cols].quantile([q_low, q_high])
    # 生成所有变量的筛选条件:每列数据都在对应分位数区间内
    filter_mask = df[target_cols].apply(
        lambda col: col.between(quantile_vals.loc[q_low, col.name], quantile_vals.loc[q_high, col.name])
    ).all(axis=1)
    # 返回满足所有条件的行
    return df[filter_mask]

# 对4个DataFrame分别应用筛选函数
clean_df1 = filter_quantile_range(df1)
clean_df2 = filter_quantile_range(df2)
clean_df3 = filter_quantile_range(df3)
clean_df4 = filter_quantile_range(df4)

代码说明

  • 批量获取分位数:通过df[target_cols].quantile([0.1,0.9])一次性得到所有目标变量的10%和90%分位数,避免重复调用分位数计算函数
  • 自动生成筛选条件:用apply遍历每一列,调用between判断数据是否在区间内,最后用all(axis=1)确保所有变量的条件同时满足(只有当某一行所有列都符合要求时,才会被保留)
  • 高复用性:函数可以直接复用在所有结构相同的DataFrame上,无需重复编写筛选逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:25:20