如何从每组的列中获取唯一的值组合并在原始数据框中添加新列

问题描述 投票:0回答:1

我有一个如下所示的数据框:

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)

enter image description here

我喜欢根据类型和 RTG_ID 获取组合的计数。顺序并不重要。这意味着组合 A,B 与 B,A 相同。

这是我想要的数据框输出:

output = {'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'],'COMBINATIONS': ['CD,FF,EF','CD,FF,EF','CD,FF,EF','CD,EG','CD,EG','CD,FF,EF','CD,FF,EF','CD,FF,EF','CD,FF,HH','CD,FF,HH','CD,FF,HH','CD,EG','CD,EG','CD,TT','CD,TT'],'COUNT': [2,2,2,2,2,2,2,2,1,1,1,2,2,1,1]}
df_output = pd.DataFrame(output)

enter image description here

我已阅读如何计算 pandas 中每组唯一值的组合?但我喜欢将组合添加到我的原始数据框中。

python pandas dataframe group-by count
1个回答
0
投票

由于顺序并不重要,为了保证顺序相同,请考虑在组合之前先排序:

a = df.sort_values('TYPE').groupby('RTG_ID').agg(','.join)
df.merge(a.reset_index().merge(a.value_counts().reset_index()), on = 'RTG_ID')

   RTG_ID TYPE_x    TYPE_y  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
© www.soinside.com 2019 - 2024. All rights reserved.