Failure to identify NaNs as equal in pandas.DataFrame.equals() method (as it should)
# Code to replicate problem

Please see [this link](https://drive.google.com/file/d/1kFhLsHK7YAn2eDIFLi2W0ozha1ux9xov/view?usp=sharing) to download the referenced files.

```python
df = pd.read_pickle('bug_df.pickle')
df2 = pd.read_pickle('bug_s2c.pickle')

try:
    assert(df.equals(df2.loc[df.index]))
except AssertionError:
    print("This fails - but why?")
    pass

assert(set(df2.index.values) == set(df.index.values)) # Indexes have the same values, but maybe in different order

df_list = df.values.tolist()
df2_list = df2.loc[df.index].values.tolist() # Ensure index is in the same order...
vc = [x == y for (x, y) in zip(df_list, df2_list)] # vc is list of lists...

try:
    assert(all(vc))
except AssertionError:
    print("This fails, so must be different values. But which one...?")
    pass

idx = vc.index(False)
print(df_list[idx])
print(df2_list[idx])

print("Hmmm... lists look the same...")

print(len(df2_list[idx]) == len(df_list[idx])) # Check length equality

df2_el = df2_list[idx]
df_el = df_list[idx]

el_comp = [x == y for (x,y) in zip(df2_el, df_el)]
print(el_comp) # First element is different
el_diff = el_comp.index(False)
print("Clearly its the first element that is different, but the first element in" + \
      " both lists are NaNs - pandas is meant to treat them as equal.")

print("Are the first elements even NaNs...?")
print(pd.isna(df_el[el_diff]))
print(pd.isna(df2_el[el_diff]))
print("... so yes, they are apprently are. How is this possible...?")
```

This produces the output:
```
This fails - but why?
This fails, so must be different values. But which one...?
[nan, nan, nan, nan, nan, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
[nan, nan, nan, nan, nan, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Hmmm... lists look the same...
True
[False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]
Clearly its the first element that is different, but the first element in both lists are NaNs - pandas is meant to treat them as equal.
Are the first elements even NaNs...?
True
True
... so yes, they are apprently are. How is this possible...?
```
#### Problem description

With the DataFrame.equals() method, pandas seems to be failing to identify NaNs as equal, as stated by  [the documentation.](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.equals.html)

The problem occurs with Pandas v0.22.

#### Expected Output

There should be no failure of assertion at the first assert statement. Equivalently, ``This fails - but why?`` should not be printed.

#### Output of ``pd.show_versions()``

INSTALLED VERSIONS
------------------
commit: None
python: 3.5.2.final.0
python-bits: 64
OS: Linux
OS-release: 4.4.0-112-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.22.0
pytest: 3.0.3
pip: 9.0.1
setuptools: 28.8.0
Cython: 0.25.1
numpy: 1.11.2
scipy: 0.18.1
pyarrow: None
xarray: None
IPython: 5.1.0
sphinx: 1.4.8
patsy: 0.4.1
dateutil: 2.6.1
pytz: 2016.7
blosc: None
bottleneck: 1.1.0
tables: 3.3.0
numexpr: 2.6.1
feather: None
matplotlib: 1.5.3
openpyxl: 2.4.9
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.3
lxml: 3.8.0
bs4: 4.5.1
html5lib: 1.0b10
sqlalchemy: 1.1.3
pymysql: None
psycopg2: None
jinja2: 2.8
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None

</details>
