BUG: Fix initialization of DataFrame from dict with NaN as key
State: closed

- [x] closes #18455
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This does not solve the [MI example](https://github.com/pandas-dev/pandas/issues/18455#issuecomment-346700652) in #18455, but that should be included in #18485 .

Labels:
name: Missing-data
description: np.nan, pd.NaT, pd.NA, dropna, isnull, interpolate
name: Dtype Conversions
description: Unexpected or buggy dtype conversions

Comments:
pls rebase if you can continue on this.
Hello @toobaz! Thanks for updating the PR.

















Cheers ! There are no PEP8 issues in this Pull Request. :beers: 

##### Comment last updated on April 01, 2018 at 15:27 Hours UTC
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18600?src=pr&el=h1) Report
> Merging [#18600](https://codecov.io/gh/pandas-dev/pandas/pull/18600?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/6a22cf786e9e09ceb8ca44b712dce4af5bbcfd65?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/18600/graphs/tree.svg?height=150&width=650&token=eZ4WkYLtcO&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/18600?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #18600      +/-   ##
==========================================
+ Coverage   91.84%   91.84%   +<.01%     
==========================================
  Files         152      152              
  Lines       49265    49256       -9     
==========================================
- Hits        45247    45241       -6     
+ Misses       4018     4015       -3
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.23% <100%> (ø)` | :arrow_up: |
| #single | `41.9% <93.33%> (ø)` | :arrow_up: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/18600?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/generic.py](https://codecov.io/gh/pandas-dev/pandas/pull/18600/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZ2VuZXJpYy5weQ==) | `95.94% <ø> (+0.04%)` | :arrow_up: |
| [pandas/core/internals.py](https://codecov.io/gh/pandas-dev/pandas/pull/18600/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW50ZXJuYWxzLnB5) | `95.53% <100%> (ø)` | :arrow_up: |
| [pandas/core/series.py](https://codecov.io/gh/pandas-dev/pandas/pull/18600/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvc2VyaWVzLnB5) | `93.9% <100%> (+0.11%)` | :arrow_up: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/18600/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `97.15% <100%> (-0.02%)` | :arrow_down: |
| [pandas/core/dtypes/cast.py](https://codecov.io/gh/pandas-dev/pandas/pull/18600/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZHR5cGVzL2Nhc3QucHk=) | `87.85% <0%> (+0.16%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18600?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18600?src=pr&el=footer). Last update [6a22cf7...22701fc](https://codecov.io/gh/pandas-dev/pandas/pull/18600?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

@toobaz did you add a test case for https://github.com/pandas-dev/pandas/issues/19497 to see if it's fixed?
> @toobaz did you add a test case for #19497 to see if it's fixed?

See https://github.com/pandas-dev/pandas/issues/19497#issuecomment-363139985
@jreback ping. The new commit removes a workaround to #18455.
ASV run:

```
       before           after         ratio
     [324379ce]       [ef2340f7]
-      33.3±0.9ms       29.9±0.1ms     0.90  frame_ctor.FromDicts.time_nested_dict_index
-      32.8±0.2ms      28.5±0.09ms     0.87  frame_ctor.FromDictwithTimestamp.time_dict_with_timestamp_offsets(<Hour>)
-      50.4±0.3ms       42.4±0.5ms     0.84  frame_ctor.FromDicts.time_nested_dict_columns
-         417±3μs          281±6μs     0.67  frame_ctor.FromRecords.time_frame_from_records_generator(None)
-     1.32±0.03ms          277±1μs     0.21  frame_ctor.FromRecords.time_frame_from_records_generator(1000)

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
```

The Travis CI problem seems unrelated.
@jreback rebased, ready to merge if there are no further comments
will look