我有一个如下所示的数据框:
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)
我喜欢根据类型和 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)
我已阅读如何计算 pandas 中每组唯一值的组合?但我喜欢将组合添加到我的原始数据框中。
由于顺序并不重要,为了保证顺序相同,请考虑在组合之前先排序:
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