wik*_*wik 2 python numpy pandas
分组规则:
例如:
c0 c1 c2 c3
A 1 0 0 1
B 0 0 1 0
C 0 0 0 1
D 0 1 1 0
E 0 1 0 0
Run Code Online (Sandbox Code Playgroud)
预期产量:
[[A, C], [B, D, E]]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,B和E在列中不共享"1",但它们共有"D",因此所有3都应该分组
这是networkx的解决方案.
import networkx as nx
a = np.where(df.T, df.index, '').sum(axis=1)
g = [list(x) for x in a if len(x) > 1]
G = nx.Graph(g)
list(nx.connected_components(G))
[{'B', 'D', 'E'}, {'A', 'C'}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |