apply doesn't work when returning 2D vector (shape=(N,1)) instead of 1D (shape=(N,))
#### Code Sample, a copy-pastable example if possible

```python
# Your code here
import numpy as np
import pandas as pd
f = lambda x: np.reshape(x,(-1,1))
df = pd.DataFrame(np.random.randn(10,3), columns=['a','b','c'])
df.apply(f)
```

#### Problem description

Code is self explainable

#### Expected Output

#### Output of ``df.apply(f))``

<details>

```
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapfunc(obj, method, *args, **kwds)
     51     try:
---> 52         return getattr(obj, method)(*args, **kwds)
     53

~\Anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   4371                 return self[name]
-> 4372             return object.__getattribute__(self, name)
   4373

AttributeError: 'Series' object has no attribute 'reshape'

During handling of the above exception, another exception occurred:

Exception                                 Traceback (most recent call last)
<ipython-input-16-4d3ad4c6f441> in <module>()
----> 1 df.apply(f)

~\Anaconda3\lib\site-packages\pandas\core\frame.py in apply(self, func, axis, broadcast, raw, reduce, result_type, args, **kwds)
   6002                          args=args,
   6003                          kwds=kwds)
-> 6004         return op.get_result()
   6005
   6006     def applymap(self, func):

~\Anaconda3\lib\site-packages\pandas\core\apply.py in get_result(self)
    316                                       *self.args, **self.kwds)
    317
--> 318         return super(FrameRowApply, self).get_result()
    319
    320     def apply_broadcast(self):

~\Anaconda3\lib\site-packages\pandas\core\apply.py in get_result(self)
    140             return self.apply_raw()
    141
--> 142         return self.apply_standard()
    143
    144     def apply_empty_result(self):

~\Anaconda3\lib\site-packages\pandas\core\apply.py in apply_standard(self)
    246
    247         # compute the result using the series generator
--> 248         self.apply_series_generator()
    249
    250         # wrap results

~\Anaconda3\lib\site-packages\pandas\core\apply.py in apply_series_generator(self)
    275             try:
    276                 for i, v in enumerate(series_gen):
--> 277                     results[i] = self.f(v)
    278                     keys.append(v.name)
    279             except Exception as e:

<ipython-input-4-75939c74dee2> in <lambda>(x)
----> 1 f = lambda x: np.reshape(x,(-1,1))

~\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in reshape(a, newshape, order)
    255            [5, 6]])
    256     """
--> 257     return _wrapfunc(a, 'reshape', newshape, order=order)
    258
    259

~\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapfunc(obj, method, *args, **kwds)
     60     # a downstream library like 'pandas'.
     61     except (AttributeError, TypeError):
---> 62         return _wrapit(obj, method, *args, **kwds)
     63
     64

~\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in _wrapit(obj, method, *args, **kwds)
     44         if not isinstance(result, mu.ndarray):
     45             result = asarray(result)
---> 46         result = wrap(result)
     47     return result
     48

~\Anaconda3\lib\site-packages\pandas\core\series.py in __array_wrap__(self, result, context)
    645         """
    646         return self._constructor(result, index=self.index,
--> 647                                  copy=False).__finalize__(self)
    648
    649     def __array_prepare__(self, result, context=None):

~\Anaconda3\lib\site-packages\pandas\core\series.py in __init__(self, data, index, dtype, name, copy, fastpath)
    272             else:
    273                 data = _sanitize_array(data, index, dtype, copy,
--> 274                                        raise_cast_failure=True)
    275
    276                 data = SingleBlockManager(data, index, fastpath=True)

~\Anaconda3\lib\site-packages\pandas\core\series.py in _sanitize_array(data, index, dtype, copy, raise_cast_failure)
   4159     elif subarr.ndim > 1:
   4160         if isinstance(data, np.ndarray):
-> 4161             raise Exception('Data must be 1-dimensional')
   4162         else:
   4163             subarr = com._asarray_tuplesafe(data, dtype=dtype)

Exception: ('Data must be 1-dimensional', 'occurred at index a')
```

</details>
