擅长:python、mysql、java
<p>这可以实现您想要的:</p>
<pre><code>import numpy as np
from itertools import combinations
import networkx as nx
df
"""output:
1 2 3 4
0
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
"""
df.index.tolist()
"""output:
['A', 'B', 'C', 'D', 'E']
"""
list(combinations(df.index.tolist(),2))
"""output :
[('A', 'B'),
('A', 'C'),
('A', 'D'),
('A', 'E'),
('B', 'C'),
('B', 'D'),
('B', 'E'),
('C', 'D'),
('C', 'E'),
('D', 'E')]
"""
results = [x for x in list(combinations(df.index.tolist(),2)) if np.sum(df.loc[x[0],:].multiply(df.loc[x[1],:])) > 0]
results
"""output:
[('A', 'C'), ('B', 'D'), ('D', 'E')]
"""
list(nx.connected_components(nx.Graph(results)))
"""output:
[{'A', 'C'}, {'B', 'D', 'E'}]
"""
</code></pre>