Pandas中的变换与聚合

Syl*_*202 14 python aggregation pandas pandas-groupby

在对Pandas DataFrame进行分组时,我transform何时应该使用aggregate?何时应该使用?它们在实践中的应用有何不同,您认为哪一个更重要?

piR*_*red 36

考虑数据帧 df

df = pd.DataFrame(dict(A=list('aabb'), B=[1, 2, 3, 4], C=[0, 9, 0, 9]))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


groupby 是标准使用聚合器

df.groupby('A').mean()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


也许你希望这些值在整个组中广播,并返回与你开始时相同的索引.
使用transform

df.groupby('A').transform('mean')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

df.set_index('A').groupby(level='A').transform('mean')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


agg 如果您要为不同的列运行特定的事物或在同一列上运行多个事物,则使用此选项.

df.groupby('A').agg(['mean', 'std'])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

df.groupby('A').agg(dict(B='sum', C=['mean', 'prod']))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 极好的答案! (4认同)
  • 通过使用“agg”,我如何返回到原始数据框“df”以分解聚合列? (3认同)