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

基于多数规则去除重复:按A列处理DataFrame的技术需求

解决按A列去重并保留多数值、移除歧义组的问题

我来帮你搞定这个需求,用Pandas就能轻松实现你的要求——按A列分组,保留每组中B出现次数最多的条目;如果组内没有绝对多数(多个值出现次数相同),就整组移除;无重复的组直接保留。

步骤1:准备数据并导入依赖

首先把你的原始数据转换成Pandas DataFrame:

import pandas as pd

# 原始数据
data = {
    'A': [1, 1, 1, 2, 2, 3],
    'B': ['cat', 'cat', 'dog', 'llama', 'alpaca', 'donkey']
}
df = pd.DataFrame(data)

步骤2:计算每组内的频次

先统计每个(A,B)组合的出现次数,明确每个组里各个值的占比:

# 统计(A,B)的出现次数
count_df = df.groupby(['A', 'B']).size().reset_index(name='count')

这一步得到的count_df如下:

ABcount
1cat2
1dog1
2alpaca1
2llama1
3donkey1

步骤3:筛选出每组的最高频次条目

接下来找出每个A组里的最大频次,再筛选出达到这个频次的条目:

# 获取每个A组的最大频次
max_count_df = count_df.groupby('A')['count'].max().reset_index(name='max_count')

# 合并后筛选出频次等于组内最大值的条目
filtered_df = count_df.merge(max_count_df, on='A')
filtered_df = filtered_df[filtered_df['count'] == filtered_df['max_count']]

此时filtered_df包含每个组里的“候选”条目:

ABcountmax_count
1cat22
2alpaca11
2llama11
3donkey11

步骤4:移除歧义组并得到最终结果

现在去掉那些有多个候选条目的组(比如A=2,多个值都达到最大频次),只保留每个A组只有一个候选条目的情况:

# 找出每个A组的候选条目数量,只保留数量为1的组
valid_groups = filtered_df.groupby('A').size().reset_index(name='entry_count')
valid_groups = valid_groups[valid_groups['entry_count'] == 1]['A']

# 提取最终结果
final_result = filtered_df[filtered_df['A'].isin(valid_groups)][['A', 'B']]

最终结果

运行完上面的代码后,final_result就是你想要的DataFrame:

AB
1cat
3donkey

这样就完美实现了需求:A=1保留出现次数最多的cat,A=2因为无多数值被移除,A=3直接保留唯一的donkey。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:04:36