title: Sample two pandas dataframes the same way
body: <p>I'm doing a machine learning computations having two dataframes - one for factors and other one for target values. I have to split both into training and testing parts. It seems to me that I've found the way but I'm looking for more elegant solution. Here is my code:</p>
  
  <pre><code>import pandas as pd
  import numpy as np
  import random
  
  df_source = pd.DataFrame(np.random.randn(5,2),index = range(0,10,2), columns=list('AB'))
  df_target = pd.DataFrame(np.random.randn(5,2),index = range(0,10,2), columns=list('CD'))
  
  rows = np.asarray(random.sample(range(0, len(df_source)), 2))
  
  df_source_train = df_source.iloc[rows]
  df_source_test = df_source[~df_source.index.isin(df_source_train.index)]
  df_target_train = df_target.iloc[rows]
  df_target_test = df_target[~df_target.index.isin(df_target_train.index)]
  
  print('rows')
  print(rows)
  print('source')
  print(df_source)
  print('source train')
  print(df_source_train)
  print('source_test')
  print(df_source_test)
  </code></pre>
  
  <p>---- edited - solution by unutbu (midified) ---</p>
  
  <pre><code>np.random.seed(2013)
  percentile = .6
  rows = np.random.binomial(1, percentile, size=len(df_source)).astype(bool)
  
  df_source_train = df_source[rows]
  df_source_test = df_source[~rows]
  df_target_train = df_target[rows]
  df_target_test = df_target[~rows]
  </code></pre>