Sla*_*jni 2 python graph-theory networkx pandas
假设我有以下数据框:
index A B
-----------------
1 A1 B1
2 A1 B2
3 A1 B3
4 A2 B1
Run Code Online (Sandbox Code Playgroud)
我如何编写返回这些对 (Ax,By) 的代码,这些对满足这样的条件,即 Ax 与更多不同的 Bs 连接,而不是 By 与不同的 As 连接。
在这种情况下,它应该返回 (A1, B1),因为 A1 与 3 个不同的 B 相连,但 B1 与 2 个不同的 As 相连。
我们可以将其视为图形问题,并检查这些节点中哪些节点的度数高于 1。然后只需对两个值都满足条件的行进行索引:
import networkx as nx
G = nx.from_pandas_edgelist(df, source='A', target='B')
keep = [node for node, deg in G.degree() if deg>1]
df[df[['A','B']].isin(keep).all(1)]
index A B
0 1 A1 B1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |