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