DataFrame.squeeze(axis=None) [source]
将1维轴对象Squeeze成标量(scalars)。
具有单个元素的Series或数据类型被压缩为标量(scalars)。具有单列或单行的数据被Squeeze为一个Series。否则对象不变。
当不知道对象是Series还是DataFrame,但知道它只有一个列时,此方法最有用。在这种情况下,您可以安全地调用squeeze,以确保您拥有一个Series。
参数: | axis: 一个特定squeeze的轴。默认情况下, 所有长度为 |
返回值: | DataFrame, Series, 或 scalar 挤squeeze轴或所有轴后的projection。 |
例子
>>> 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