title: Python Pandas, create empty DataFrame specifying column dtypes
body: <p>There is one thing that I find myself having to do quite often, and it surprises me how difficult it is to achieve this in Pandas. Suppose I need to create an empty <code>DataFrame</code> with specified index type and name, and column types and names. (I might want to fill it later, in a loop for example.) The easiest way to do this, that I have found, is to create an empty <code>pandas.Series</code> object for each column, specifying their <code>dtype</code>s, put them into a dictionary which specifies their names, and pass the dictionary into the <code>DataFrame</code> constructor. Something like the following.</p>
  
  <pre><code>def create_empty_dataframe():
      index = pandas.Index([], name="id", dtype=int)
      column_names = ["name", "score", "height", "weight"]
      series = [pandas.Series(dtype=str), pandas.Series(dtype=int), pandas.Series(dtype=float), pandas.Series(dtype=float)]
      columns = dict(zip(column_names, series))
      return pandas.DataFrame(columns, index=index, columns=column_names)
      # The columns=column_names is required because the dictionary will in general put the columns in arbitrary order.
  </code></pre>
  
  <p>First question. Is the above really the simplest way of doing this? There are so many things that are convoluted about this. What I really want to do, and what I'm pretty sure a lot of people really want to do, is something like the following.</p>
  
  <pre><code>df = pandas.DataFrame(columns=["id", "name", "score", "height", "weight"], dtypes=[int, str, int, float, float], index_column="id") 
  </code></pre>
  
  <p>Second question. Is this sort of syntax at all possible in Pandas? If not, are the devs considering supporting something like this at all? It feels to me that it really ought to be as simple as this (the above syntax).</p>