title: Pandas passing wrong dtypes when calling apply
body: <p>I'm running into an issue using the <code>pandas.DataFrame.apply</code> function.</p>
  
  <p>It seems to cast all values to <code>bool</code>, unless I "touch" the <code>DataFrame</code> by adding a new column. This happens regardless of whether I use row or column-based <code>apply</code> (i.e. <code>axis=0</code> or <code>axis=1</code>).</p>
  
  <p>My intuition tells me I'm doing something deeply wrong here, but I can't put my finger on what the problem is.</p>
  
  <pre><code>from datetime import datetime, timedelta
  import pandas as pd
  
  start_date = datetime(2014, 1, 1)
  end_date = datetime(2014, 1, 3)
  
  events = pd.DataFrame({
      "some_boolean_field": True,
      "timestamp": pd.date_range(start_date, end_date, freq='D')
  })
  
  def do_stuff(event):
      print event
      print ""
  
  def run_experiment(message, df):
      print message
      print "**********************************"
      print df
      print df.dtypes
      df.apply(do_stuff, axis=1)
      print "\n\n"
  
  run_experiment("BEFORE ADDING EXTRA FIELD", events)
  
  events['foo'] = "WTF"  # Insane hack to get pandas to pass the correct row dtypes when applying the `do_stuff` function.
  run_experiment("AFTER ADDING EXTRA FIELD", events)
  </code></pre>
  
  <p>This outputs:</p>
  
  <pre><code>BEFORE ADDING EXTRA FIELD
  **********************************
    some_boolean_field  timestamp
  0               True 2014-01-01
  1               True 2014-01-02
  2               True 2014-01-03
  some_boolean_field              bool
  timestamp             datetime64[ns]
  dtype: object
  some_boolean_field    True
  timestamp             True
  Name: 0, dtype: bool
  
  some_boolean_field    True
  timestamp             True
  Name: 1, dtype: bool
  
  some_boolean_field    True
  timestamp             True
  Name: 2, dtype: bool
  
  
  
  
  AFTER ADDING EXTRA FIELD
  **********************************
    some_boolean_field  timestamp  foo
  0               True 2014-01-01  WTF
  1               True 2014-01-02  WTF
  2               True 2014-01-03  WTF
  some_boolean_field              bool
  timestamp             datetime64[ns]
  foo                           object
  dtype: object
  some_boolean_field                   True
  timestamp             2014-01-01 00:00:00
  foo                                   WTF
  Name: 0, dtype: object
  
  some_boolean_field                   True
  timestamp             2014-01-02 00:00:00
  foo                                   WTF
  Name: 1, dtype: object
  
  some_boolean_field                   True
  timestamp             2014-01-03 00:00:00
  foo                                   WTF
  Name: 2, dtype: object
  </code></pre>
  
  <ul>
  <li>pandas version: 0.14.1</li>
  <li>numpy version: 1.8.1</li>
  <li>Operating System: Mac OS X 10.9.5</li>
  </ul>