You are executing a tethered assignment form, see here why this is a really bad idea.
See this question, but here
Pandas usually warns you that you are changing the view (especially at 0.15.0).
In [49]: foo = pd.DataFrame({'a':[1,2,3], 'b':[3,4,5]}) In [51]: foo Out[51]: ab 0 1 3 1 2 4 2 3 5 In [52]: bar = foo.ix[:1] In [53]: bar Out[53]: ab 0 1 3 1 2 4 In [54]: bar.dtypes Out[54]: a int64 b int64 dtype: object
You should never rely on whether something is a representation (even in numpy), except in some very strong situations. This is not a guaranteed design, depending on the location of the underlying data memory.
You very very rarely try to set data for distribution through a view. and doing this in pandas almost always cause problems when you mix dtypes types. (In numpy you can see only one type of dtype, I'm not even sure that the idea of a multi-thread array that modifies dtype does or even allows it).
source share