title: Pandas DataFrame convert to binary
body: <p>Given <code>pd.DataFrame</code> with <code>0.0 &lt; values &lt; 1.0</code>, I would like to convert it to binary values <code>0</code> /<code>1</code> according to defined threshold <code>eps = 0.5</code>,</p>
  
  <pre><code>      0     1     2
  0  0.35  0.20  0.81
  1  0.41  0.75  0.59
  2  0.62  0.40  0.94
  3  0.17  0.51  0.29
  </code></pre>
  
  <p>Right now, I only have this <code>for loop</code> which takes quite long time for large dataset:</p>
  
  <pre><code>import numpy as np
  import pandas as pd
  
  data = np.array([[.35, .2, .81],[.41, .75, .59],
                  [.62, .4, .94], [.17, .51, .29]])
  
  df = pd.DataFrame(data, index=range(data.shape[0]), columns=range(data.shape[1]))
  eps = .5
  b = np.zeros((df.shape[0], df.shape[1]))
  for i in range(df.shape[0]):
      for j in range(df.shape[1]):
          if df.loc[i,j] &lt; eps:
              b[i,j] = 0
          else:
              b[i,j] = 1
  df_bin = pd.DataFrame(b, columns=df.columns, index=df.index)
  </code></pre>
  
  <p>Does anybody know a more effective way to convert to binary values?</p>
  
  <pre><code>     0    1    2
  0  0.0  0.0  1.0
  1  0.0  1.0  1.0
  2  1.0  0.0  1.0
  3  0.0  1.0  0.0
  </code></pre>
  
  <p>Thanks,</p>