首页 > 解决方案 > Pandas Groupby 对不同的列使用不同的 agg 方法

问题描述

这是场景:

期望的输出:

因为我们谈论的是一个 314 列的数据集,所以我不能只创建一个包含每一列的字典。

df_train.groupby('Supplier').agg({<some columns> : 'last', <some columns>: 'sum', <some columns>: 'mean' })

PS:我使用我想应用不同聚合的顺序对列进行排序。

标签: pythonpandasgroup-by

解决方案


您可以使用select_dtypes来获取数字列,并在字典理解中使用这些列。

numeric_cols = df_train.select_dtypes('numeric').columns

agg_dict = {c: 'sum' if c in numeric_cols else 'last' for c in df_train.columns}

grouped = df_train.groupby('Supplier').agg(agg_dict)

关于您的 one-hot 编码列,您需要提供有关如何识别它们的更多信息。


推荐阅读