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

如何按组获取列值的唯一组合并添加至原DataFrame

解决方法

要实现按RTG_ID分组统计TYPE的无序组合,并将组合信息和计数合并回原DataFrame,可按以下步骤操作:

步骤1:生成每个分组的组合字符串

按RTG_ID分组后,提取每组TYPE的唯一值,排序后用逗号拼接(排序是为了统一无序组合的格式,确保CD,FF,EF和FF,CD,EF被视为同一组合)。

步骤2:统计每个组合的出现次数

基于生成的组合字符串,统计每个组合在所有分组中出现的次数。

步骤3:合并信息到原DataFrame

将组合字符串和计数与原DataFrame按RTG_ID关联,完成数据整合。

完整代码

import pandas as pd

# 原DataFrame
data = {'RTG_ID': ['AA','AA','AA','BB','BB','CC','CC','CC','EE','EE','EE','GG','GG','FF','FF'], 
        'TYPE': ['CD','FF','EF','CD','EG','CD','EF','FF','CD','EF','HH','CD','EG','CD','TT']}
df = pd.DataFrame(data)

# 1. 生成每个RTG_ID对应的无序组合字符串(排序后拼接)
group_combinations = df.groupby('RTG_ID')['TYPE'].agg(
    lambda x: ','.join(sorted(x.unique()))
).reset_index(name='COMBINATIONS')

# 2. 统计每个组合的出现次数
combination_counts = group_combinations['COMBINATIONS'].value_counts().reset_index()
combination_counts.columns = ['COMBINATIONS', 'COUNT']

# 3. 合并组合信息、计数与原DataFrame
df_output = df.merge(
    group_combinations.merge(combination_counts, on='COMBINATIONS'),
    on='RTG_ID'
)

print(df_output)

输出结果

运行代码后得到的df_output与期望结果一致:

RTG_ID TYPE COMBINATIONS  COUNT
0      AA   CD  CD,EF,FF      2
1      AA   FF  CD,EF,FF      2
2      AA   EF  CD,EF,FF      2
3      BB   CD  CD,EG        2
4      BB   EG  CD,EG        2
5      CC   CD  CD,EF,FF      2
6      CC   EF  CD,EF,FF      2
7      CC   FF  CD,EF,FF      2
8      EE   CD  CD,EF,HH     1
9      EE   EF  CD,EF,HH     1
10     EE   HH  CD,EF,HH     1
11     GG   CD  CD,EG        2
12     GG   EG  CD,EG        2
13     FF   CD  CD,TT        1
14     FF   TT  CD,TT        1

注:组合字符串的元素顺序为排序后结果,与示例中的顺序略有不同,但不影响组合的唯一性判定(因为无序组合不关心顺序)。若需保持示例中的元素顺序,可去掉sorted()函数,但这样会导致CD,FF,EF和FF,CD,EF被视为不同组合,不符合“组合不考虑顺序”的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:03:30