You are viewing documentation about an older version (1.21.0). View latest version

modin.pandas.DataFrame.squeeze¶

DataFrame.squeeze(axis: Axis | None = None)[source]¶

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. For Series this parameter is unused and defaults to None.

Returns:

The projection after squeezing axis or all the axes.

Return type:

DataFrame, Series, or scalar

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

>>> primes = pd.Series([2, 3, 5, 7])
Copy

Slicing might produce a Series with a single value:

>>> even_primes = primes[primes % 2 == 0]   
>>> even_primes  
0    2
dtype: int64
Copy
>>> even_primes.squeeze()  
2
Copy

Squeezing objects with more than one value in every axis does nothing:

>>> odd_primes = primes[primes % 2 == 1]  
>>> odd_primes  
1    3
2    5
3    7
dtype: int64
Copy
>>> odd_primes.squeeze()  
1    3
2    5
3    7
dtype: int64
Copy

Squeezing is even more effective when used with DataFrames.

>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
>>> df
   a  b
0  1  2
1  3  4
Copy

Slicing a single column will produce a DataFrame with the columns having only one value:

>>> df_a = df[['a']]
>>> df_a
   a
0  1
1  3
Copy

So the columns can be squeezed down, resulting in a Series:

>>> df_a.squeeze('columns')
0    1
1    3
Name: a, dtype: int64
Copy

Slicing a single row from a single column will produce a single scalar DataFrame: # TODO: SNOW-1372242: Remove instances of to_pandas when lazy index is implemented

>>> df_0a = df.loc[df.index.to_pandas() < 1, ['a']]
>>> df_0a
   a
0  1
Copy

Squeezing the rows produces a single scalar Series:

>>> df_0a.squeeze('rows')
a    1
Name: 0, dtype: int64
Copy

Squeezing all axes will project directly into a scalar:

>>> df_0a.squeeze()
1
Copy