Spec-Zone.ru › pandas 0.25

pandas.DataFrame.squeeze

DataFrame.squeeze(self, axis=None) [source]

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

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

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

Параметры:
axis : {0 or ‘index’, 1 or ‘columns’, None}, default None

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

Новое в версии 0.20.0.

Возвращаемое значение:
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–2012, 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/0.25.0/reference/api/pandas.DataFrame.squeeze.html

Spec-Zone.ru

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