0

I have created the jaccard similarities (refer to this post-> How to compute jaccard similarity from a pandas dataframe)

            Unnamed    A     B      C    D     
 Unnamed       1      0.05  0.05  0.05  0.05  
    A        0.05      1    0.99  0.99  0.99  
    B        0.05   0.99     1    0.99  0.99  
    C        0.05   0.99    0.99    1   0.99  
    D        0.05   0.99    0.99  0.99   1    

the matrix that shown above is also referring to the referent post.

my question is I would like to know how to convert this matrix into pair or list? because i will use the data in the form of list or pair for creating the network

i expected to see the result as

([unnamed, unnamed], 1)
([unnamed, A], 0.05)
([unnamed, B], 0.05)
([unnamed, C], 0.05)
([unnamed, D], 0.05
([A, unnamed], 0.05)
([A,A], 1)
([A,B], 0.99)
([A,C], 0.99)
([A,D], 0.99)
.
.
.
([D,Unnamed], 0.05)
([D,A], 0.99)
([D,B], 0.99)
([D,C], 0.99)
([D,D], 1)

thank you in advanced

Sujin
  • 273
  • 1
  • 11

1 Answers1

0

Use

In [91]: df.stack().to_dict()
Out[91]:
{('Unnamed', 'Unnamed'): 1.0,
 ('Unnamed', 'A'): 0.05,
 ('Unnamed', 'B'): 0.05,
 ('Unnamed', 'C'): 0.05,
 ('Unnamed', 'D'): 0.05,
 ('A', 'Unnamed'): 0.05,
 ('A', 'A'): 1.0,
 ('A', 'B'): 0.99,
 ('A', 'C'): 0.99,
 ('A', 'D'): 0.99,
 ('B', 'Unnamed'): 0.05,
 ('B', 'A'): 0.99,
 ('B', 'B'): 1.0,
 ('B', 'C'): 0.99,
 ('B', 'D'): 0.99,
 ('C', 'Unnamed'): 0.05,
 ('C', 'A'): 0.99,
 ('C', 'B'): 0.99,
 ('C', 'C'): 1.0,
 ('C', 'D'): 0.99,
 ('D', 'Unnamed'): 0.05,
 ('D', 'A'): 0.99,
 ('D', 'B'): 0.99,
 ('D', 'C'): 0.99,
 ('D', 'D'): 1.0}

Or,

In [98]: [(list(i), v) for i, v in df.stack().iteritems()]
Out[98]:
[(['Unnamed', 'Unnamed'], 1.0),
 (['Unnamed', 'A'], 0.05),
 (['Unnamed', 'B'], 0.05),
 (['Unnamed', 'C'], 0.05),
 (['Unnamed', 'D'], 0.05),
 (['A', 'Unnamed'], 0.05),
 (['A', 'A'], 1.0),
 (['A', 'B'], 0.99),
 (['A', 'C'], 0.99),
 (['A', 'D'], 0.99),
 (['B', 'Unnamed'], 0.05),
 (['B', 'A'], 0.99),
 (['B', 'B'], 1.0),
 (['B', 'C'], 0.99),
 (['B', 'D'], 0.99),
 (['C', 'Unnamed'], 0.05),
 (['C', 'A'], 0.99),
 (['C', 'B'], 0.99),
 (['C', 'C'], 1.0),
 (['C', 'D'], 0.99),
 (['D', 'Unnamed'], 0.05),
 (['D', 'A'], 0.99),
 (['D', 'B'], 0.99),
 (['D', 'C'], 0.99),
 (['D', 'D'], 1.0)]
Zero
  • 74,117
  • 18
  • 147
  • 154
  • thank you for your suggestion, i have one more question. if i would like to see the result as ( A, A, 1.0), (A, B, 0.99) ... is any suggestions? ._. – Sujin Oct 23 '18 at 11:05