pandas.DataFrame.squeeze#
- DataFrame.сжать(ось=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