title: Pandas - Interleave / Zip two DataFrames by row
body: <p>Suppose I have two dataframes:</p>
  
  <pre><code>&gt;&gt; df1
  
     0  1  2
  0  a  b  c
  1  d  e  f
  
  &gt;&gt; df2
  
     0  1  2
  0  A  B  C
  1  D  E  F
  </code></pre>
  
  <p><strong>How can I interleave the rows?</strong>  i.e. get this:</p>
  
  <pre><code>&gt;&gt; interleaved_df
  
     0  1  2
  0  a  b  c
  1  A  B  C
  2  d  e  f
  3  D  E  F
  </code></pre>
  
  <p>(Note my real DFs have identical columns, but not the same number of rows).</p>
  
  <hr>
  
  <h3>What I've tried</h3>
  
  <p>inspired by <a href="https://stackoverflow.com/questions/45332960/interweave-two-dataframes">this question</a> (very similar, but asks on <strong>columns</strong>):</p>
  
  <pre><code>import pandas as pd
  from itertools import chain, zip_longest
  
  df1 = pd.DataFrame([['a','b','c'], ['d','e','f']])  
  df2 = pd.DataFrame([['A','B','C'], ['D','E','F']])
  
  concat_df = pd.concat([df1,df2])
  
  new_index = chain.from_iterable(zip_longest(df1.index, df2.index))
  # new_index now holds the interleaved row indices
  
  interleaved_df = concat_df.reindex(new_index)
  
  ValueError: cannot reindex from a duplicate axis
  </code></pre>
  
  <p>The last call fails because df1 and df2 have some identical index values (which is also the case with my real DFs). </p>
  
  <p>Any ideas?</p>