Pandas Groupby对不同的列使用不同的agg方法

时间:2019-05-03 14:47:06

标签: python pandas group-by

这是场景:

  • 我有一个大的有序数据集,包含314列和300.000行以上的ML问题。

  • 我想按X列(供应商)对数据集进行分组。

  • 一列是日期时间类型,某些列本质上是数字, 其他则是从某些分类列中进行一键编码的。

所需的输出:

  • 我想对X列进行分组,并按“均值”聚合数字列,按“ last”聚合一些列,并按“ sum”聚合一个热编码的列。全部使用相同的agg方法。

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

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

PS:我按照想要应用不同聚合的顺序对列进行了排序。

1 个答案:

答案 0 :(得分:0)

您可以使用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)

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