title: Distance matrix for rows in pandas dataframe
body: <p>I have a pandas dataframe that looks as follows:</p>
  
  <pre><code>In [23]: dataframe.head()
  Out[23]: 
  column_id   1  10  11  12  13  14  15  16  17  18 ...  46  47  48  49   5  50  \
  row_id                                            ...                           
  1         NaN NaN   1   1   1   1   1   1   1   1 ...   1   1 NaN   1 NaN NaN   
  10          1   1   1   1   1   1   1   1   1 NaN ...   1   1   1 NaN   1 NaN   
  100         1   1 NaN   1   1   1   1   1 NaN   1 ... NaN NaN   1   1   1 NaN   
  11        NaN   1   1   1   1   1   1   1   1 NaN ... NaN   1   1   1   1   1   
  12          1   1   1 NaN   1   1   1   1 NaN   1 ...   1 NaN   1   1 NaN   1   
  </code></pre>
  
  <p>The thing is I'm currently using the Pearson correlation to calculate similarity between rows, and given the nature of the data, sometimes std deviation is zero (all values are 1 or NaN), so the pearson correlation returns this:</p>
  
  <pre><code>In [24]: dataframe.transpose().corr().head()
  Out[24]: 
  row_id   1  10  100  11  12  13  14  15  16  17 ...  90  91  92  93  94  95  \
  row_id                                          ...                           
  1      NaN NaN  NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN   
  10     NaN NaN  NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN   
  100    NaN NaN  NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN   
  11     NaN NaN  NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN   
  12     NaN NaN  NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN    
  </code></pre>
  
  <p>Is there any other way of computing correlations that avoids this? Maybe an easy way to calculate the euclidean distance between rows with just one method, just as Pearson correlation has?</p>
  
  <p>Thanks!</p>
  
  <p>A.</p>