Types mismatch (float/int) causes inconsistent output and data corruption
Try the following:

```
In [1]: import pandas

In [2]: df = pandas.read_csv('http://pietrobattiston.it/c/test.csv')

In [3]: df_n = df[(df.cod >= 6001) & (df.cod <= 6012)]

In [4]: df_n['mese'] = ((df_n.cod - 6000) % 12) + 1

In [5]: ind = ['chi', 'anno', 'loc']

In [6]: df_n['cassa_t'] = 0

In [7]: df_ind = df.set_index(ind)

In [8]: df_n_ind = df_n.set_index(ind)

In [9]: df_n_ind['cassa_t'][df_n_ind.mese == 5] += df_ind[df_ind.cod == 6031]['quanto']

In [10]: df_n_ind['cassa_t'][df_n_ind.mese == 8] += df_ind[df_ind.cod == 6032]['quanto']

In [11]: df_n_ind[df_n_ind.cassa_t > 10].head()
Out[11]: 
                  Unnamed: 0   cosa   cod     quanto  mese  cassa_t
chi   anno loc                                                     
1edcd 2009 3b049         720  b4087  6004  98.765671     5        0
      2010 3b049         721  b4087  6004  88.157426     5        0
      2011 3b049         722  b4087  6004  87.671619     5        0
      2012 3b049         723  b4087  6004  48.458905     5        0
      2013 3b049         724  b4087  6004  40.620916     5        0

[5 rows x 6 columns]
```

Notice the filtering criterion!

Everything works smoothly instead if at step 6 you replace "0" with "float(0)". So I do know where the problem comes from: the sliced assignment between different types at steps 9 and 10 (nothing changes if you replace "+=" with "="). Still, I think this is a quite unexpected behaviour.

I'm currently not able to reproduce, but at some time I also got some very strange numbers after similar assignments, like if the memory representation of floats had been considered as an integer representation, or vice-versa.

Tested with updated git (commit ae2dd935dd673f1a72a7ab580a97fbe8f0e5fd81 ).
