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

如何通过Pandas Groupby分组并比较多列,识别重复的value_pack分组

解决Value_pack重复分组判定问题

嘿,我来帮你搞定这个重复value_pack分组的判定问题!根据你定义的重复规则——当两个value_pack分组内的所有(value, discount)条目完全一致时视为重复,我们可以用Pandas分三步实现:

步骤1:为每个Value_pack生成唯一特征标识

首先,我们需要把每个value_pack下的(value, discount)组合转换成一个可哈希的、能代表该分组特征的结构(比如排序后的元组)。这样才能方便后续比较不同分组是否一致。

这里用排序是为了避免条目顺序影响判定(如果你的业务逻辑里条目顺序不同不算重复,可以去掉sorted())。

import pandas as pd

# 先加载你的数据集(这里用示例数据模拟)
df = pd.DataFrame({
    'Value_pack': ['Val 1', 'Val 1', 'Val 2', 'Val 2', 'Val 3', 'Val 3', 'Val 4'],
    'value': ['ADA', 'ADB', 'ADA', 'ADB', 'ADA', 'ADB', 'ADA'],
    'discount': [0, 100, 0, 100, 50, 40, 40]
})

# 定义函数:将分组内的(value, discount)转换为排序后的元组(作为唯一特征键)
def generate_group_key(group):
    sorted_pairs = sorted(zip(group['value'], group['discount']))
    return tuple(sorted_pairs)

# 为每个Value_pack生成对应的特征键
group_feature_map = df.groupby('Value_pack').apply(generate_group_key).reset_index(name='group_key')

步骤2:筛选出重复的特征键对应的分组

接下来,我们找出那些特征键重复的记录,再把对应的Value_pack分组汇总:

# 筛选出所有重复的特征键记录(keep=False保留所有重复项)
duplicate_groups = group_feature_map[group_feature_map.duplicated('group_key', keep=False)]

# 按特征键分组,汇总对应的Value_pack名称
duplicate_result = duplicate_groups.groupby('group_key')['Value_pack'].apply(list)

步骤3:输出结果

最后,我们可以把结果格式化输出:

# 遍历输出每一组重复的Value_pack
for packs in duplicate_result:
    print(f"重复分组: {', '.join(packs)}")

运行结果

针对你的数据集,会输出:

重复分组: Val 1, Val 2

这样就精准找出了所有符合规则的重复分组啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:37:46