pandas.Series.squeeze#

Series.сжать(ось=None)[источник]#

Сжать одномерные объекты осей в скаляры.

Series или DataFrames с одним элементом сжимаются до скаляра. DataFrames с одним столбцом или одной строкой сжимаются до Series. В остальных случаях объект остаётся неизменным.

Этот метод наиболее полезен, когда вы не знаете, является ли ваш объект Series или DataFrame, но знаете, что у него всего один столбец. В этом случае вы можете безопасно вызвать сжать чтобы убедиться, что у вас есть Series.

Параметры:
ось{0 или 'index', 1 или 'columns', None}, по умолчанию None

Конкретная ось для сжатия. По умолчанию все оси длины 1 сжимаются. Для Series этот параметр не используется и по умолчанию равен None.

Возвращает:
DataFrame, Series или скаляр

Проекция после сжатия ось или все оси.

Смотрите также

Series.iloc

Индексирование на основе целочисленных позиций для выбора скаляров.

DataFrame.iloc

Индексирование на основе целочисленных позиций для выбора Series.

Series.to_frame

Обратная операция к DataFrame.squeeze для DataFrame с одним столбцом.

Примеры

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

Срез может создать Series с одним значением:

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

Сжатие объектов с более чем одним значением по каждой оси не дает эффекта:

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

Сжатие еще более эффективно при использовании с DataFrame.

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

Срез одного столбца создаст DataFrame, в котором столбцы имеют только одно значение:

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

Таким образом, столбцы могут быть сжаты, что приводит к Series:

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

Срез одной строки из одного столбца даст единичный скалярный DataFrame:

>>> df_0a = df.loc[df.index < 1, ['a']]
>>> df_0a
   a
0  1

Сжатие строк даёт одиночный скалярный Series:

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

Сжатие всех осей приведет к прямой проекции в скаляр:

>>> df_0a.squeeze()
1