DOC: Strange behavior when combining astype and loc
I am trying to use `astype` together with `loc` to convert just a subset of columns to a specified dtype. However, I can't understand what is actually happening. Is this the expected behavior when combining 
`astype` and `loc`?
#### Code Sample, a copy-pastable example if possible

```
import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6], 'c': [7, 8, 9]})

print df.loc[:, ['a', 'b']].astype(np.uint8).dtypes

df.loc[:, ['a', 'b']] = df.loc[:, ['a', 'b']].astype(np.uint8)
print df.dtypes
```

Output:

```
>>> df.loc[:, ['a', 'b']].astype(np.uint8).dtypes
a    uint8
b    uint8
dtype: object
>>> df.loc[:, ['a', 'b']] = df.loc[:, ['a', 'b']].astype(np.uint8)
>>> df.dtypes
a    int64
b    int64
c    int64
dtype: object
```
#### Expected Output

```
>>> df.loc[:, ['a', 'b']].astype(np.uint8).dtypes
a    uint8
b    uint8
dtype: object
>>> df.loc[:, ['a', 'b']] = df.loc[:, ['a', 'b']].astype(np.uint8)
>>> df.dtypes
a    uint8
b    uint8
c    int64
dtype: object
```
#### output of `pd.show_versions()`
## INSTALLED VERSIONS

commit: None
python: 2.7.6.final.0
python-bits: 64
OS: Linux
OS-release: 4.2.0-36-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.18.0
nose: None
pip: 8.1.1
setuptools: 20.6.7
Cython: None
numpy: 1.11.0
scipy: 0.17.0
statsmodels: None
xarray: None
IPython: 4.1.2
sphinx: None
patsy: None
dateutil: 2.5.2
pytz: 2016.3
blosc: None
bottleneck: None
tables: None
numexpr: None
matplotlib: 1.5.1
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.8
boto: None
