<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def squeeze(self, axis=None):
 """ Squeeze 1 dimensional axis objects into scalars. Series or DataFrames with a single element are squeezed to a scalar. DataFrames with a single column or a single row are squeezed to a Series. Otherwise the object is unchanged. This method is most useful when you don't know if your object is a Series or DataFrame, but you do know it has just a single column. In that case you can safely call `squeeze` to ensure you have a Series. Parameters axis : {0 or 'index', 1 or 'columns', None}, default None A specific axis to squeeze. By default, all length-1 axes are squeezed. .. versionadded:: 0.20.0 Returns ------- DataFrame, Series, or scalar The projection after squeezing `axis` or all the axes. See Also -------- Series.iloc : Integer-location based indexing for selecting scalars. DataFrame.iloc : Integer-location based indexing for selecting Series. Series.to_frame : Inverse of DataFrame.squeeze for a single-column DataFrame. Examples -------- Slicing might produce a Series with a single value: 0 2 dtype: int64 2 Squeezing objects with more than one value in every axis does nothing: 1 3 2 5 3 7 dtype: int64 1 3 2 5 3 7 dtype: int64 Squeezing is even more effective when used with DataFrames. a b 0 1 2 1 3 4 Slicing a single column will produce a DataFrame with the columns having only one value: a 0 1 1 3 So the columns can be squeezed down, resulting in a Series: 0 1 1 3 Name: a, dtype: int64 Slicing a single row from a single column will produce a single scalar DataFrame: a 0 1 Squeezing the rows produces a single scalar Series: a 1 Name: 0, dtype: int64 Squeezing all axes wil project directly into a scalar: 1 """

        axis = (self._AXIS_NAMES if axis is None else
                (self._get_axis_number(axis),))
        try:
            return self.iloc[
                tuple(0 if i in axis and len(a) == 1 else slice(None)
                      for i, a in enumerate(self.axes))]
        except Exception:
            return self