在数据框和分组结果中比较结果

时间:2018-12-06 02:11:38

标签: python pandas python-2.7

我有一个由电子邮件组成的数据集,它们之间的相似程度与它们的得分相关。

    emlgroup1 emlgroup2  scores
79   1739.eml  1742.eml     100
130  1742.eml  1739.eml     100
153  1743.eml  1744.eml      99
157  1743.eml  1748.eml      82
170  1744.eml  1743.eml      99
175  1744.eml  1748.eml      82
231  1747.eml  1750.eml      85
242  1748.eml  1743.eml      82
243  1748.eml  1744.eml      82
282  1750.eml  1747.eml      85

我现在想要做的是像这样将它们自动分组,然后将其放入一个只有一列的新数据框中。

group 1: 1739.eml, 1742.eml

group 2: 1743.eml, 1744.eml, 1748

group 3: 1747.eml, 1750.eml

所需的输出:

         Col 1
1  1739.eml 1742.eml
2  1743.eml 1744.eml 1748.eml
3  1747.eml 1750.eml

我陷入了逻辑部分,该部分将数据拆分为另一个组/集群。我真的是刚在StackOverflow上发布文章,所以希望我不要犯任何错误,谢谢!!

1 个答案:

答案 0 :(得分:1)

使用networkx的网络问题

import networkx as nx 
G=nx.from_pandas_edgelist(df, 'emlgroup1', 'emlgroup2')
l=list(nx.connected_components(G))
l
[{'1739.eml', '1742.eml'}, {'1744.eml', '1743.eml', '1748.eml'}, {'1747.eml', '1750.eml'}]

pd.Series(l).to_frame('col 1')
                            col 1
0            {1739.eml, 1742.eml}
1  {1744.eml, 1743.eml, 1748.eml}
2            {1747.eml, 1750.eml}