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

按PRIMARY_SIC_CODE分组剔除ROA列首尾1%分位数的实现方法

按分组剔除ROA首尾1%分位数的简便实现

Python(Pandas)实现

利用groupby结合filter方法,针对每个分组计算ROA的1%和99%分位数,筛选出处于中间区间的行:

import pandas as pd

# 假设数据集存储在DataFrame df中
df_filtered = df.groupby('PRIMARY_SIC_CODE').filter(
    lambda group: (group['ROA'] > group['ROA'].quantile(0.01)) & 
                  (group['ROA'] < group['ROA'].quantile(0.99))
)
  • 逻辑说明:groupby('PRIMARY_SIC_CODE')按行业代码分组,filter传入的lambda函数会对每个分组单独判断,仅保留ROA值落在1%~99%分位数之间的行。

R(dplyr)实现

借助dplyr的分组和筛选函数,高效完成分组过滤:

library(dplyr)

# 假设数据集存储在data.frame df中
df_filtered <- df %>%
  group_by(PRIMARY_SIC_CODE) %>%
  filter(between(ROA, quantile(ROA, 0.01), quantile(ROA, 0.99))) %>%
  ungroup()
  • 逻辑说明:group_by分组后,between函数直接判断ROA是否处于1%和99%分位数区间内,最后用ungroup取消分组状态(按需可选)。

注:如果需要保留等于分位数的边界值,可将Python中的>/<改为>=/<=,R中无需修改(between默认包含边界)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:15:58