使用groupby统计column1分组下column2最常见的取值组合
实现方案(Python + Pandas)
实现思路
- 按
column1分组,提取每组column2的唯一值集合,避免同组重复元素影响组合统计 - 枚举每个分组集合的所有非空组合(可按需指定组合长度,示例中最高频的是2元组合),记录每个组合的出现次数(即存在该组合的分组数量)
- 对所有组合的出现次数排序,取值最高的即为目标公共组合
具体代码实现
首先导入依赖库:
import pandas as pd from itertools import combinations from collections import defaultdict
然后构造样例数据集:
# 构造样例数据集 data = { 'column1': ['A','A','A','B','B','C','C','C','C','D','D'], 'column2': ['apple','banana','pineapple','apple','banana','grape','banana','apple','mandarine','apple','banana'] } df = pd.DataFrame(data)
分组统计组合频率:
# 按column1分组,获取每组column2的唯一值集合 group_items = df.groupby('column1')['column2'].unique().tolist() # 统计所有组合的出现次数 com_counter = defaultdict(int) for items in group_items: # 可修改range参数自定义统计的组合长度,当前设置为统计长度≥2的所有组合 for i in range(2, len(items)+1): # 先排序再生成组合,避免相同元素不同顺序被识别为不同组合 for com in combinations(sorted(items), i): com_counter[com] += 1 # 找出出现次数最多的组合 most_common_com = max(com_counter.items(), key=lambda x: x[1]) print(f"出现次数最多的公共组合是{most_common_com[0]},共出现{most_common_com[1]}次")
样例输出
出现次数最多的公共组合是('apple', 'banana'),共出现4次
内容的提问来源于stack exchange,提问作者Binay
相关产品推荐
相关产品推荐

