Assignment to DataFrame not working but dtypes changed
#### Code Sample

```python
# python version
# Python 3.7.2 (default, Feb 21 2019, 17:35:59) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32

import pandas as pd
import numpy as np

dataset = [[[i for i in range(5)], ] for i in range(5)]
dataset = pd.DataFrame(dataset, columns=['test'])  # generate a test dataset with shape (5, 5)

empty_numpy = np.arange(25).reshape(5, 5)
empty_numpy.fill(np.nan)

# Solution 1: change the below code into 'empty_frame = pd.DataFrame(empty_numpy)' then everything will be fine
empty_frame = pd.DataFrame(empty_numpy, columns=[str(i) for i in range(5)])

series = dataset['test']
target_frame = pd.DataFrame(list(series))

# Solution 2: run `empty_frame[:] = target_frame` twice, work fine to me.
# ==================================================================
# First try.
empty_frame[:] = target_frame
print("="*40)
print(f"Data types of empty_frame: {empty_frame.dtypes}")
print("="*40)

print("Result of first try: ")
print(empty_frame)
print("="*40)


# Second try.
empty_frame[:] = target_frame

print(f"Data types of empty_frame: {empty_frame.dtypes}")
print("="*40)

print("Result of second try: ")
print(empty_frame)
print("="*40)
# ====================================================================
```
#### Problem description
*Assignment to DataFrame not working but dtypes changed*

New to data-science, I wanna to asign the `target_frame` to the `empty_frame`, but it's not working until asign again. And during the asignments, the dtypes of `empty_frame` has changed from `int32` to `float64` and finally setup to `int64`.

There are two solutions for this problem but I don't know why:
* as I showed in my code, try the asignment twice in one run.
* remove the columns' name when creating `empty_frame`.

It cost me a whole night to figure out what happens, the code above has been extracted and simplified. Two things I want to figure out:
1. why `empty_frame`'s data types changed.
2. why the solutions showed in my code can solve this asignment problem.

Thanks.

#### Expected Output
```python
"""
========================================
Data types of empty_frame: 0    float64
1    float64
2    float64
3    float64
4    float64
dtype: object
========================================
Result of first try: 
    0   1   2   3   4
0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN
========================================
Data types of empty_frame: 0    int64
1    int64
2    int64
3    int64
4    int64
dtype: object
========================================
Result of second try: 
   0  1  2  3  4
0  0  1  2  3  4
1  0  1  2  3  4
2  0  1  2  3  4
3  0  1  2  3  4
4  0  1  2  3  4
========================================
"""
```
#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.7.2.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None

pandas: 0.24.2
pytest: None
pip: 19.0.3
setuptools: 40.8.0
Cython: None
numpy: 1.16.2
scipy: 1.2.1
pyarrow: None
xarray: None
IPython: 7.3.0
sphinx: None
patsy: None
dateutil: 2.8.0
pytz: 2018.9
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 3.0.2
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml.etree: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
gcsfs: None
</details>
