title: Is there a way to copy only the structure (not the data) of a Pandas DataFrame?
body: <p>I received a DataFrame from somewhere and want to create another DataFrame with the same number and names of columns and rows (indexes). For example, suppose that the original data frame was created as</p>
  
  <pre><code>import pandas as pd
  df1 = pd.DataFrame([[11,12],[21,22]], columns=['c1','c2'], index=['i1','i2'])
  </code></pre>
  
  <p>I copied the structure by explicitly defining the columns and names:</p>
  
  <pre><code>df2 = pd.DataFrame(columns=df1.columns, index=df1.index)    
  </code></pre>
  
  <p>I don't want to copy the data, otherwise I could just write <code>df2 = df1.copy()</code>. In other words, after df2 being created it must contain only NaN elements:</p>
  
  <pre><code>In [1]: df1
  Out[1]: 
      c1  c2
  i1  11  12
  i2  21  22
  
  In [2]: df2
  Out[2]: 
       c1   c2
  i1  NaN  NaN
  i2  NaN  NaN
  </code></pre>
  
  <p>Is there a more idiomatic way of doing it?</p>