dask.dataframe.DataFrame.squeeze

dask.dataframe.DataFrame.squeeze

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

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

此文档字符串是从 pandas.core.frame.DataFrame.squeeze 复制而来的。

Dask 版本可能存在一些不一致性。

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

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

参数
{0 或 ‘index’, 1 或 ‘columns’, None}, 默认 None

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

返回
DataFrame、Series 或标量

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

参见

Series.iloc

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

DataFrame.iloc

基于整数位置的索引,用于选择 Series。

Series.to_frame

单列 DataFrame 的 DataFrame.squeeze 的逆操作。

示例

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

在使用 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