Pandas Series: squeeze() function
Squeeze 1 dimensional axis objects into scalars
Squeeze 1 dimensional axis Series or DataFrames 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.
Syntax:
Series.squeeze(self, axis=None)
Name | Description | Type/Default Value | Required / Optional |
---|---|---|---|
axis | A specific axis to squeeze. By default, all length-1 axes are squeezed. | {0 or ‘index’, 1 or ‘columns’, None} Default Value: None |
Required |
Returns: DataFrame, Series, or scalar - The projection after squeezing axis or all the axes.
Example - Slicing might produce a Series with a single value:
Python-Pandas Code:
import numpy as np
import pandas as pd
primes = pd.Series([3, 4, 5, 7])
even_primes = primes[primes % 2 == 0]
even_primes
Output:
1 4 dtype: int64
Python-Pandas Code:
import numpy as np
import pandas as pd
primes = pd.Series([3, 4, 5, 7])
even_primes = primes[primes % 2 == 0]
even_primes.squeeze()
Output:
4
Example - Squeezing objects with more than one value in every axis does nothing:
Python-Pandas Code:
import numpy as np
import pandas as pd
primes = pd.Series([3, 4, 5, 7])
odd_primes = primes[primes % 2 == 1]
odd_primes
Output:
0 3 2 5 3 7 dtype: int64
Python-Pandas Code:
import numpy as np
import pandas as pd
primes = pd.Series([3, 4, 5, 7])
odd_primes = primes[primes % 2 == 1]
odd_primes.squeeze()
Output:
0 3 2 5 3 7 dtype: int64
Example - Squeezing is even more effective when used with DataFrames:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame([[2, 3], [4, 5]], columns=['x', 'y'])
df
Output:
x y 0 2 3 1 4 5
Example - Slicing a single column will produce a DataFrame with the columns having only one value:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame([[2, 3], [4, 5]], columns=['x', 'y'])
df_a = df[['x']]
df_a
Output:
x 0 2 1 4
Example - So the columns can be squeezed down, resulting in a Series:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame([[2, 3], [4, 5]], columns=['x', 'y'])
df_a = df[['x']]
df_a.squeeze('columns')
Output:
0 2 1 4 Name: x, dtype: int64
Example - Slicing a single row from a single column will produce a single scalar DataFrame:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame([[2, 3], [4, 5]], columns=['x', 'y'])
df_0a = df.loc[df.index < 1, ['x']]
df_0a
Output:
x 0 2
Example - Squeezing the rows produces a single scalar Series:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame([[2, 3], [4, 5]], columns=['x', 'y'])
df_0a = df.loc[df.index < 1, ['x']]
df_0a.squeeze('rows')
Output:
x 2 Name: 0, dtype: int64
Example - Squeezing all axes will project directly into a scalar:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame([[2, 3], [4, 5]], columns=['x', 'y'])
df_0a = df.loc[df.index < 1, ['x']]
df_0a.squeeze()
Output:
2
Previous: Repeat elements of a Pandas series
Next: Create a new view of Pandas Series
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/pandas/series/series-squeeze.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics