Spec-Zone.ru › pandas 1

pandas.DataFrame.squeeze

DataFrame.squeeze(axis=None)[source]

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

Объекты Series или DataFrame с одним элементом сжимаются до скаляра. DataFrame с одним столбцом или одной строкой сжимаются до Series. В противном случае объект остается неизменным.

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

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

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

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

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

См. также

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

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.DataFrame.squeeze.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API