pandas.Series.squeeze#

Series.squeeze(axis=None)[源代码]#

将1维轴对象压缩为标量。

具有单个元素的Series或DataFrame被压缩为标量。单列或单行的DataFrame被压缩为一个系列。否则,对象将保持不变。

当您不知道对象是Series还是DataFrame,但知道它只有一列时,此方法最有用。在这种情况下,您可以安全地呼叫 squeeze 以确保你有一个系列赛。

参数
axis{0或‘index’,1或‘Columns’,无},默认为无

要挤压的特定轴。默认情况下,所有长度为1的轴都是挤压的。

退货
DataFrame、系列或标量

挤压后的投影 axis 或者所有的斧头。

参见

Series.iloc

用于选择标量的基于整数位置的索引。

DataFrame.iloc

用于选择系列的基于整数位置的索引。

Series.to_frame

单列DataFrame的DataFrame.Squeeze的反转。

示例

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

切片可能会产生具有单个值的系列:

>>> 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

当与DataFrames一起使用时,挤压甚至更加有效。

>>> 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

因此,可以向下挤压柱子,从而产生一系列:

>>> 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

挤压行将生成单个标量系列:

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

挤压所有轴将直接投影到标量中:

>>> df_0a.squeeze()
1