在groupby中squeeze = True有什么作用?

nit*_*hin 5 python dataframe pandas

我发现文档说如果可能的话减少返回类型的维度,否则返回一致的类型。

df = pd.DataFrame(
     {'a': np.ones(4, dtype='float32'),
     'b': np.ones(4, dtype='float32'),
     'c': np.zeros(4, dtype='float32')})

df.groupby(df4.index,squeeze=True)['b'].sum()
Run Code Online (Sandbox Code Playgroud)

无论有没有挤压,我都看不到任何变化。有人可以向我解释一下挤压 = True 的真正目的以及为什么它默认设置为 false

Flo*_*oor 5

经过一番研究后,如果可能的话,可以使用它来减少维度。@Jeff 在 github 中展示的示例说明了为什么要使用挤压。它在此处的问题中有所说明。

df1 = pd.DataFrame(dict(A = range(4), B = 0))

def func(dataf):
    return pd.Series({ dataf.name : 1})


result1 = df1.groupby("B",squeeze=False).apply(func)
   0
B   
0  1
type(result1)
pandas.core.frame.DataFrame

result2 = df1.groupby("B",squeeze=True).apply(func)

B   
0  0    1
Name: 0, dtype: int64

type(result2)
pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)

如果可以减小尺寸,Squeeze 将尝试减小尺寸。正如您所看到的,上面的数据帧可以简化为系列,因此它是通过挤压参数完成的。使用squeeze的情况非常少。