Worked in 0.22, ceased to work in 0.23: assigning varied values to a DataFrame column slice without the need to put [0] at the end 
#### Code Sample, a copy-pastable example if possible
The following sample worked in 0.22 but no longer works in 0.23.
```python
# Sample 1
df0.flight_number[pd.isna(df0.airline_icao)] = df0.flight_number[pd.isna(df0.airline_icao)].str.extract('^\(?([A-Z]{3})')
```
Rewriting it as follows does not help.
```python
# Sample 2
df0.loc[pd.isna(df0.airline_icao), 'airline_icao'] = df0.flight_number[pd.isna(df0.airline_icao)].str.extract('^\(?([A-Z]{3})')
# Sample 3
df0.loc[pd.isna(df0.airline_icao), 'airline_icao'] = df0.loc[pd.isna(df0.airline_icao), 'flight_number'].str.extract('^\(?([A-Z]{3})')
```
This version works:
```python
df0.loc[pd.isna(df0.airline_icao), 'airline_icao'] = df0.loc[pd.isna(df0.airline_icao), 'flight_number'].str.extract('^\(?([A-Z]{3})')[0]
```

#### Problem description
The problem for me is that values from the slices on the right right do not make it to the left slices, unless [0] is at the end. However, all the slicing (and extracting on the right, as well as other data transformations) in samples 1, 2, 3 still works fine. I suppose the problem is caused by the fact that there are Series on the left, and single-column DataFrames on the right.

At the same time, the following code works both in 0.22 and 0.23, maybe because there are Series both on the left and right:

```python
flights['distance_km'] = flights.apply(lambda x: dist((x['latitude'], x['longitude']), (x['latitude_d'], x['longitude_d'])), axis = 1)
S031_flight_distance_list = {1500: 'below1500', 3500: '1500to3500', np.inf: 'above3500'}

flights.distance[~flights.distance.map(lambda x: x in S031_flight_distance_list.values())] = pd.cut(flights.distance_km[~flights.distance.map(lambda x: x in S031_flight_distance_list.values())], bins = [0] + list(S031_flight_distance_list.keys()), labels = S031_flight_distance_list.values())

```
#### Expected Output
``` python
df0.loc[pd.isna(df0.airline_icao), 'airline_icao']
Out[105]: 
61        NaN
62        NaN
67        NaN
68        NaN
69        NaN
75        NaN
150       NaN
792       NaN
794       NaN
1034      NaN
1036      NaN
1037      NaN
1141      NaN
1142      NaN
1143      NaN
1144      NaN
1145      NaN
1234      NaN

df0.loc[pd.isna(df0.airline_icao), 'flight_number'].str.extract('^\(?([A-Z]{3})')
Out[106]: 
          0
61      NaN
62      NaN
67      NaN
68      NaN
69      NaN
75      ARZ
150     NaN
792     NaN
794     NaN
1034    NaN
1036    NaN
1037    ENT
1141    NaN
1142    NaN
1143    NaN
1144    NaN
1145    NaN
1234    ARZ

# The following code should result in putting e.g. 'ARZ' in row 75 of df0.flight_number:
df0.loc[pd.isna(df0.airline_icao), 'airline_icao'] = df0.loc[pd.isna(df0.airline_icao), 'flight_number'].str.extract('^\(?([A-Z]{3})')

```

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

<details>

[paste the output of ``pd.show_versions()`` here below this line]
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.4.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 158 Stepping 9, GenuineIntel
byteorder: little
LC_ALL: None
LANG: en
LOCALE: None.None

pandas: 0.23.0
pytest: 3.3.2
pip: 10.0.1
setuptools: 38.4.0
Cython: 0.27.3
numpy: 1.14.0
scipy: 1.0.0
pyarrow: None
xarray: None
IPython: 6.2.1
sphinx: 1.6.6
patsy: 0.5.0
dateutil: 2.6.1
pytz: 2017.3
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.4
feather: None
matplotlib: 2.1.2
openpyxl: 2.4.10
xlrd: 1.1.0
xlwt: 1.3.0
xlsxwriter: 1.0.2
lxml: 4.2.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.1
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: 0.4.1
pandas_datareader: None

</details>
