title: Randomly concat data frames by row
body: <p>How can I randomly merge, join or concat pandas data frames by row? Suppose I have four data frames something like this (with a lot more rows): </p>
  
  <pre><code>df1 = pd.DataFrame({'col1':["1_1", "1_1"], 'col2':["1_2", "1_2"], 'col3':["1_3", "1_3"]})
  df2 = pd.DataFrame({'col1':["2_1", "2_1"], 'col2':["2_2", "2_2"], 'col3':["2_3", "2_3"]})
  df3 = pd.DataFrame({'col1':["3_1", "3_1"], 'col2':["3_2", "3_2"], 'col3':["3_3", "3_3"]})
  df4 = pd.DataFrame({'col1':["4_1", "4_1"], 'col2':["4_2", "4_2"], 'col3':["4_3", "4_3"]})
  </code></pre>
  
  <p>How can I join these four data frames randomly output something like this (they are randomly merged row for row):</p>
  
  <pre><code>  col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
  0  1_1  1_2  1_3  4_1  4_2  4_3  2_1  2_2  2_3  3_1  3_2  3_3
  1  2_1  2_2  2_3  1_1  1_2  1_3  3_1  3_2  3_3  4_1  4_2  4_3
  </code></pre>
  
  <p>I was thinking I could do something like this: </p>
  
  <pre><code>my_list = [df1,df2,df3,df4]
  my_list = random.sample(my_list, len(my_list))
  df = pd.DataFrame({'empty' : []})
  
  for row in df:
      new_df = pd.concat(my_list, axis=1)
  
  print new_df
  </code></pre>
  
  <p>Above <code>for</code> statement will not work for more than the first row, every row after (I have more) will just be the same, i.e it will only shuffle once: </p>
  
  <pre><code>  col1 col2 col3 col1 col2 col3 col1 col2 col3 col1 col2 col3
  0  4_1  4_2  4_3  1_1  1_2  1_3  2_1  2_2  2_3  3_1  3_2  3_3
  1  4_1  4_2  4_3  1_1  1_2  1_3  2_1  2_2  2_3  3_1  3_2  3_3
  </code></pre>