title: Create new DataFrame as ordered mix of columns of other DataFrames
body: <p>I have this kind of DataFrames</p>
  
  <pre><code>import pandas as pd
  
  df1 = pd.DataFrame({'a':[1.1,1.1,1.1], 'b':[2.1,2.1,2.1], 'c':[3.1,3.1,3.1]})
  df2 = pd.DataFrame({'aa':[1.2,1.2,1.2], 'bb':[2.2,2.2,2.2], 'cc':[3.2,3.2,3.2]})
  df3 = pd.DataFrame({'aaa':[1.3,1.3,1.3], 'bbb':[2.3,2.3,2.3], 'ccc':[3.3,3.3,3.3]})
  </code></pre>
  
  <p>These frames always have the same shape (and column names doesnt always fit alphabetic order). I want to find out the best way to combine their columns in the resulting frame which looks like:</p>
  
  <pre><code>     a   aa  aaa    b   bb  bbb    c   cc  ccc
  0  1.1  1.2  1.3  2.1  2.2  2.3  3.1  3.2  3.3
  1  1.1  1.2  1.3  2.1  2.2  2.3  3.1  3.2  3.3
  2  1.1  1.2  1.3  2.1  2.2  2.3  3.1  3.2  3.3
  </code></pre>
  
  <p>My approach is nested loops and filling new frame column by column:</p>
  
  <pre><code>df_new = pd.DataFrame()
  
  for i in range(df1.shape[1]):
      for df in [df1, df2, df3]:
          df_new[df.columns[i]] = df.iloc[:, i]
  
  print(df_new)
  </code></pre>
  
  <p>It works, but i think there is more reliable way to do this.</p>
  
  <p><strong>EDIT</strong>: with the help of pd.concat (Thanks @Tbaki) it can be done also woth two steps:</p>
  
  <pre><code>df_new = pd.concat([df1,df2,df3],axis=1)
  
  small = df1.shape[1]
  big = df_new.shape[1]
  
  #create correct order
  new_order = []
  
  for i in range(small):
      new_order.extend(list(range(i, big, small)))
  
  df_new.iloc[:, new_order]
  </code></pre>
  
  <p>Thanks!</p>