parameters: (series, level, fill_value)
return_statement: return concat(out, axis='columns', copy=False, keys=result.columns)
docstring: 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.
docstring_summary: Unstack an ExtensionArray-backed Series.
docstring_tokens: Unstack an ExtensionArray - backed Series .
function: def _unstack_extension_series(series, level, fill_value):
      """
      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.
      """
      # Implementation note: the basic idea is to
      # 1. Do a regular unstack on a dummy array of integers
      # 2. Followup with a columnwise take.
      # We use the dummy take to discover newly-created missing values
      # introduced by the reshape.
      from pandas.core.reshape.concat import concat
  
      dummy_arr = np.arange(len(series))
      # fill_value=-1, since we will do a series.values.take later
      result = _Unstacker(dummy_arr, series.index,
                          level=level, fill_value=-1).get_result()
  
      out = []
      values = extract_array(series, extract_numpy=False)
  
      for col, indices in result.iteritems():
          out.append(Series(values.take(indices.values,
                                        allow_fill=True,
                                        fill_value=fill_value),
                            name=col, index=result.index))
      return concat(out, axis='columns', copy=False, keys=result.columns)
function_tokens: def _unstack_extension_series ( series , level , fill_value ) : # Implementation note: the basic idea is to # 1. Do a regular unstack on a dummy array of integers # 2. Followup with a columnwise take. # We use the dummy take to discover newly-created missing values # introduced by the reshape. from pandas . core . reshape . concat import concat dummy_arr = np . arange ( len ( series ) ) # fill_value=-1, since we will do a series.values.take later result = _Unstacker ( dummy_arr , series . index , level = level , fill_value = - 1 ) . get_result ( ) out = [ ] values = extract_array ( series , extract_numpy = False ) for col , indices in result . iteritems ( ) : out . append ( Series ( values . take ( indices . values , allow_fill = True , fill_value = fill_value ) , name = col , index = result . index ) ) return concat ( out , axis = 'columns' , copy = False , keys = result . columns )