MemoryError on Left Merge
#### Code Sample

```python
In [3]: mem_usage(ccn)
Out[3]: '29629.72 MB'

In [4]: mem_usage(namemaps)
Out[4]: '4259.97 MB'

In [5]: ccn.shape
Out[5]: (28858789, 20)

In [6]: namemaps.shape
Out[6]: (28858505, 2)

In [7]: ccn = pd.merge(ccn,namemaps,on='name',how='left')

---------------------------------------------------------------------------
MemoryError                               Traceback (most recent call last)
<ipython-input-7-0dd32481b665> in <module>
----> 1 ccn = pd.merge(ccn,namemaps,on='name',how='left')

~/miniconda3/lib/python3.6/site-packages/pandas/core/reshape/merge.py in merge(left, right, how, on, left_on, right_on, left_index, right_index, sort, suffixes, copy, indicator, validate)
     60                          copy=copy, indicator=indicator,
     61                          validate=validate)
---> 62     return op.get_result()
     63
     64

~/miniconda3/lib/python3.6/site-packages/pandas/core/reshape/merge.py in get_result(self)
    580             [(ldata, lindexers), (rdata, rindexers)],
    581             axes=[llabels.append(rlabels), join_index],
--> 582             concat_axis=0, copy=self.copy)
    583
    584         typ = self.left._constructor

~/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py in concatenate_block_managers(mgrs_indexers, axes, concat_axis, copy)
   5419         else:
   5420             b = make_block(
-> 5421                 concatenate_join_units(join_units, concat_axis, copy=copy),
   5422                 placement=placement)
   5423         blocks.append(b)

~/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py in concatenate_join_units(join_units, concat_axis, copy)
   5563     to_concat = [ju.get_reindexed_values(empty_dtype=empty_dtype,
   5564                                          upcasted_na=upcasted_na)
-> 5565                  for ju in join_units]
   5566
   5567     if len(to_concat) == 1:

~/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py in <listcomp>(.0)
   5563     to_concat = [ju.get_reindexed_values(empty_dtype=empty_dtype,
   5564                                          upcasted_na=upcasted_na)
-> 5565                  for ju in join_units]
   5566
   5567     if len(to_concat) == 1:

~/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py in get_reindexed_values(self, empty_dtype, upcasted_na)
   5873             for ax, indexer in self.indexers.items():
   5874                 values = algos.take_nd(values, indexer, axis=ax,
-> 5875                                        fill_value=fill_value)
   5876
   5877         return values

~/miniconda3/lib/python3.6/site-packages/pandas/core/algorithms.py in take_nd(arr, indexer, axis, out, fill_value, mask_info, allow_fill)
   1653             out = np.empty(out_shape, dtype=dtype, order='F')
   1654         else:
-> 1655             out = np.empty(out_shape, dtype=dtype)
   1656
   1657     func = _get_take_nd_function(arr.ndim, arr.dtype, out.dtype, axis=axis,

MemoryError:


```
#### Problem description

This problem is occurring on a machine with 384GB memory (Linux), and 64bit python (provided by Miniconda).  The merge is successful on smaller subsets of the 'ccn' dataframe, so I am not sure why it is failing on the full data set, given the dataframe sizes in memory (shown above).  Monitoring the merge process in `top` shows that total memory consumption goes up to about 45% usage before throwing this exception.


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


<details>

[paste the output of ``pd.show_versions()`` here below this line]

```
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 4.15.0-1021-aws
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: C.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.23.4
pytest: None
pip: 18.1
setuptools: 39.2.0
Cython: None
numpy: 1.15.4
scipy: None
pyarrow: None
xarray: None
IPython: 7.2.0
sphinx: None
patsy: None
dateutil: 2.7.5
pytz: 2018.9
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: None
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: 1.2.15
pymysql: 0.9.3
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
```

</details>
