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

如何在循环中为DataFrame新增列存储label_A列提取的分组唯一值

实现方案

方案1:Pandas原生实现(效率更高,无需手动循环)

默认按照「相邻数值差≤1归为同一组」的规则分组,代码如下:

import pandas as pd
import numpy as np

# 1. 按label_A排序后生成临时分组ID
results = results.sort_values('label_A').reset_index(drop=True)
results['group_id'] = (results['label_A'].diff() > 1).cumsum()

# 2. 聚合得到每个分组的数值区间,映射回原表生成新列
group_mapper = results.groupby('group_id')['label_A'].agg(
    lambda x: [x.min(), x.max()] # 存储分组上下限的写法
    # 如果要存储分组内所有唯一值,替换为:lambda x: sorted(x.unique().tolist())
).to_dict()
results['group_range'] = results['group_id'].map(group_mapper)

# 删除临时生成的分组ID列
results.drop('group_id', axis=1, inplace=True)

方案2:循环实现

符合你要求的循环操作逻辑,代码如下:

# 1. 排序后遍历数值生成分组
sorted_labels = sorted(results['label_A'].tolist())
group_list = []
current_group = [sorted_labels[0]]

for val in sorted_labels[1:]:
    # 相邻数值差值≤1则归为同一组,可按需调整阈值
    if val - current_group[-1] <= 1:
        current_group.append(val)
    else:
        group_list.append([current_group[0], current_group[-1]])
        current_group = [val]
# 补充最后一个未加入的分组
group_list.append([current_group[0], current_group[-1]])

# 2. 生成数值到所属分组的映射字典,写入新列
val_to_group = {}
for g in group_list:
    for num in range(g[0], g[1]+1):
        val_to_group[num] = g

results['group_range'] = results['label_A'].map(val_to_group)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:04