pandas.Series.squeeze #

系列。挤压=[来源]

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

具有单个元素的系列或数据帧被压缩为标量。具有单列或单行的 DataFrame 被压缩为一个 Series。否则该对象不变。

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

参数
axis {0 或 'index', 1 或 'columns', None}, 默认 None

要挤压的特定轴。默认情况下,所有长度为 1 的轴都会被挤压。对于系列,此参数未使用,默认为None

返回
数据框、系列或标量

挤压轴或所有轴后的投影。

也可以看看

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

与 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

因此可以将列压缩,形成一个系列:

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