如何将已排序的DataFrame数值按指定分位数断点分配至对应分组?
股票数据分位分组实现方案
前提说明
你当前已完成value列排序,10条数据刚好对应[0,20,40,60,80]的分位断点,每2条数据匹配一个分位区间,直接按排序后的索引分配分组即可。
具体实现代码(Python Pandas环境)
- 首先重置排序后数据集的索引(避免原索引干扰分组)
# 假设你排序后的DataFrame名为df_sorted df_sorted = df_sorted.reset_index(drop=True)
- 生成分位组标签
# 每2条为一组,依次分配1-5组 df_sorted['quantile_group'] = (df_sorted.index // 2) + 1 # 如需映射为分位区间文本,可添加如下代码 group_label_map = { 1: '0-20分位', 2: '20-40分位', 3: '40-60分位', 4: '60-80分位', 5: '80-100分位' } df_sorted['quantile_label'] = df_sorted['quantile_group'].map(group_label_map)
结果校验规则
- 第1组:排序后第1、2条数据,对应value最小的20%样本
- 第2组:排序后第3、4条数据,对应20%-40%分位样本
- 第3组:排序后第5、6条数据,对应40%-60%分位样本
- 第4组:排序后第7、8条数据,对应60%-80%分位样本
- 第5组:排序后第9、10条数据,对应value最大的20%样本
注意:如果你当前的排序是降序(value大的在前),会导致分组逻辑反向,建议先执行
df_sorted = df.sort_values('value', ascending=True)完成升序排序后再执行上述分组代码。
内容的提问来源于stack exchange,提问作者Hidden Angle
相关产品推荐
相关产品推荐

