python - 比较数据框中的结果和分组结果
问题描述
我有一个由电子邮件组成的数据集,以及它们之间的相似之处与它们的分数相关。
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 上发帖真的很陌生,所以我希望我没有犯任何罪,提前谢谢!
解决方案
这个网络问题使用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}
推荐阅读
- c# - 使用 Win32 API 的文件拖放在文件资源管理器等某些应用程序上不起作用
- node.js - (Discord.js) Bot 仅在本地托管时播放音乐,否则立即加入和离开
- powerbi - PowerBI 发布到 Web 添加参数
- python - 在 Python 3 与 Python 2 中解析二进制数据
- typescript - 错误 TS2304:找不到名称“发电机”
- rust - 如何在使用 `num::Float` 特征并与 Rust 中的原始类型交互时最小化样板的数量
- scala - 如何在 Scala 中编写通用数值函数?
- sonarqube - SonarQube 不适用于 Intellij 社区 2019.2
- javascript - Vue,html表格的多重过滤器
- vba - 在 VBA 中将子窗体中的字段作为变量引用