exception joining dataframes with different datatypes
In [71]: a=DataFrame(randn(10,2),columns=['a','b'])

In [72]: b=DataFrame(randn(10,1),columns=['c']).astype(np.float32)
## In [73]: a.join(b)

TypeError                                 Traceback (most recent call last)
/Users/c.prinoth/<ipython-input-73-3163f462d6f9> in <module>()
----> 1 a.join(b)

/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/pandas/core/frame.pyc in join(self, other, on, how, lsuffix, rsuffix)
   2614             return self._join_on(other, on, how, lsuffix, rsuffix)
   2615         else:
-> 2616             return self._join_index(other, how, lsuffix, rsuffix)
   2617 
   2618     def _join_on(self, other, on, how, lsuffix, rsuffix):

/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/pandas/core/frame.pyc in _join_index(self, other, how, lsuffix, rsuffix)
   2649 
   2650         # this will always ensure copied data

-> 2651         merged_data = join_managers(thisdata, otherdata, axis=1, how=how)
   2652         return self._constructor(merged_data)
   2653 

/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/pandas/core/internals.pyc in join_managers(left, right, axis, how, copy)
   1032 def join_managers(left, right, axis=1, how='left', copy=True):
   1033     op = _JoinOperation(left, right, axis=axis, how=how)
-> 1034     return op.get_result(copy=copy)
   1035 
   1036 class _JoinOperation(object):

/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/pandas/core/internals.pyc in get_result(self, copy)
   1090             if lblk and rblk:
   1091                 # true merge, do not produce intermediate copy

-> 1092                 res_blk = self._merge_blocks(lblk, rblk)
   1093             elif lblk:
   1094                 res_blk = self._reindex_block(lblk, side='left')

/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/pandas/core/internals.pyc in _merge_blocks(self, lblk, rblk)
   1206         else:
   1207             common.take_fast(rblk.values, ridx, None, False,
-> 1208                              axis=self.axis, out=out[lk:])
   1209 
   1210         # does not sort

/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/pandas/core/common.pyc in take_fast(arr, indexer, mask, needs_masking, axis, out)
    247         return take_2d(arr, indexer, out=out, mask=mask,
    248                        needs_masking=needs_masking,
--> 249                        axis=axis)
    250 
    251     result = arr.take(indexer, axis=axis, out=out)

/usr/local/Cellar/python/2.7.2/lib/python2.7/site-packages/pandas/core/common.pyc in take_2d(arr, indexer, out, mask, needs_masking, axis)
    232             needs_masking = mask.any()
    233 
--> 234         result = arr.take(indexer, axis=axis, out=out)
    235         result = _maybe_mask(result, mask, needs_masking, axis=axis,
    236                              out_passed=out is not None)

TypeError: array cannot be safely cast to required type

In [77]: a.dtypes
Out[77]: 
a    float64
b    float64

In [78]: b.dtypes
Out[78]: c    float32
