def _unstack_extension_series(series, level, fill_value):
<EOL>from pandas.core.reshape.concat import concat<EOL>dummy_arr = np.arange(len(series))<EOL>result = _Unstacker(dummy_arr, series.index,<EOL>level=level, fill_value=-<NUM_LIT:1>).get_result()<EOL>out = []<EOL>values = extract_array(series, extract_numpy=False)<EOL>for col, indices in result.iteritems():<EOL><INDENT>out.append(Series(values.take(indices.values,<EOL>allow_fill=True,<EOL>fill_value=fill_value),<EOL>name=col, index=result.index))<EOL><DEDENT>return concat(out, axis='<STR_LIT>', copy=False, keys=result.columns)<EOL>
Unstack an ExtensionArray-backed Series.

The ExtensionDtype is preserved.

Parameters
----------
series : Series
    A Series with an ExtensionArray for values
level : Any
    The level name or number.
fill_value : Any
    The user-level (not physical storage) fill value to use for
    missing values introduced by the reshape. Passed to
    ``series.values.take``.

Returns
-------
DataFrame
    Each column of the DataFrame will have the same dtype as
    the input Series.