<p>以下是一个解决方案(为了清晰起见,分几个步骤):</p>
<pre><code># create a cross product of classes per "equivalences"
t = pd.merge(df.assign(dummy = 1), df.assign(dummy=1),
on = ["dummy", "equivalences"])
# drop items in which the left and the right class are identical
t = t[t.class_x != t.class_y]
# drop duplicates such as x,y vs y,x
t.loc[t.class_x > t.class_y, ["class_x", "class_y"]] = \
t.loc[t.class_x > t.class_y, ["class_x", "class_y"]].rename(columns = {"class_x": "class_y", "class_y": "class_x"})
t = t.drop_duplicates(subset = ["equivalences", "class_x", "class_y"])
t["ch"] = t.ch_x + t.ch_y
res = t.drop(["ch_x", "dummy", "ch_y"], axis=1)
print(res)
==>
equivalences class_x class_y ch
1 ETICA CONTABIL A ÉTICA CONTÁBIL A ÉTICA CONTÁBIL COM ENFOQUE 80.0
6 AMBIENTE WEB ALTA DISPONIBILIDADE APLICAÇÕES EM NUVENS 80.0
10 TECNOLOGIAS WEB PROGRAMAÇÃO WEB AVANÇADA PÁGINAS PARA INTERNET 80.0
11 TECNOLOGIAS WEB DESENVOLVENDO COM JS PÁGINAS PARA INTERNET 80.0
14 TECNOLOGIAS WEB DESENVOLVENDO COM JS PROGRAMAÇÃO WEB AVANÇADA 80.0
</code></pre>