首页 > 解决方案 > 比较数据框中的结果和分组结果

问题描述

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

    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 上发帖真的很陌生,所以我希望我没有犯任何罪,提前谢谢!

标签: pythonpandaspython-2.7

解决方案


这个网络问题使用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}

推荐阅读