DOC: Strangest behavoir of groubpy aggregation ever, most likely a bug
#### Code Sample

```python
import sys
import logging
import pandas as pd

_logger = logging.getLogger(__name__)


def weird_func(series):
    series = pd.to_numeric(series)
    _logger.info("Series:\n{}".format(series))
    if series.name == 'feature':
        _logger.info("Calling a nonsense function with no effect on x")
        # Commenting the following line solves the problem but WHY???
        series.where(lambda x: x >= '1', inplace=False, try_cast=False, raise_on_error=True)
        _logger.error("This is NEVER SHOWN if line above is not commented!")
        result = 'Right'
    else:
        result = 'False'
    return result

logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

df = pd.DataFrame({'uid': [1, 1, 2],
                   'feature': ['10', '20', '30']})

grouped = df.groupby('uid')
print("Final result:\n{}".format(grouped['feature'].agg(weird_func)))
```
#### Problem description

The code above displays:
```bash
INFO:__main__:Series:
0    10
1    20
Name: feature, dtype: int64
INFO:__main__:Calling a nonsense function with no effect on x
INFO:__main__:Series:
0    10
1    20
Name: feature, dtype: int64
INFO:__main__:Calling a nonsense function with no effect on x
INFO:__main__:Series:
0    10
1    20
Name: 1, dtype: int64
INFO:__main__:Series:
2    30
Name: 2, dtype: int64
Final result:
uid
1    False
2    False
Name: feature, dtype: object
```
Several things are weird here:

1. The name of the first two series inside the aggregation function is `feature` as expected but the following ones are named after the the values in the `uid` column. Intended behavior?
2. Why is the error log message after the meaningless `where` call to the series never shown?
3. The dtype of the series is int64 and the comparison `x >= '1'` should fail in Python3 but doesn't?
4. Commenting the line `series.where(...` leads to the expected result

My guess is that this is somehow related to the fact that pandas benchmarks different codepaths by calling the first group several times. Herein something seems to go wrong and messes up the data structure leading to this strange behavior. If this is intended then please let me know. 

#### Expected Output

```bash
INFO:__main__:Series:
0    10
1    20
Name: feature, dtype: int64
INFO:__main__:Calling a nonsense function with no effect on x
ERROR:__main__:This is NEVER SHOWN if line above is not commented!
INFO:__main__:Series:
2    30
Name: feature, dtype: int64
INFO:__main__:Calling a nonsense function with no effect on x
ERROR:__main__:This is NEVER SHOWN if line above is not commented!
Final result:
uid
1    Right
2    Right
Name: feature, dtype: object
```

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

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.2.final.0
python-bits: 64
OS: Darwin
OS-release: 16.7.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.20.3
pytest: None
pip: 9.0.1
setuptools: 27.2.0
Cython: None
numpy: 1.12.1
scipy: 0.19.1
xarray: None
IPython: 6.1.0
sphinx: None
patsy: None
dateutil: 2.6.1
pytz: 2017.2
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: None
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
pandas_gbq: None
pandas_datareader: Non
</details>
