高阶GroupBy应用


高阶GroupBy应用

在前面深入讨论了在Series和DataFrame使用groupby方法,但仍然有一些额外的方法可能会用到。

1、分组转换和“展开”GroupBy

前面,在分组操作中学习了apply方法用于执行转换操作。还有另一个内建方法transform,与apply方法类似但是会对你可以使用的函数种类加上更多的限制:

  1. transform可以产生一个标量值,并广播到各分组的尺寸数据中
  2. transform可以产生一个与输入分组尺寸相同的对象
  3. transform不可改变它的输入

这里是按’key’分组的均值:

假设想要产生一个Series,它的尺寸和df[‘value’]一样,但值都被按’key’分组的均值替代。可以向transfrom传递匿名函数lambda x: x.mean():

对于内建的聚合函数,可以像GroupBy的agg方法一样传递一个字符串别名:

可以按照每个组的降序计算排名:

内建的聚合函数如’mean’或’sum’通常会比apply函数更快。这些函数在与transform一起使用时也会存在一个”快速通过”。

2、分组的时间重新采样

对于时间序列数据,resample方法在语义上是一种基于时间分段的分组操作。下面是一个小的示例表:

可以按’time’进行索引,然后重新采样:

假设DataFrame包含多个时间序列,并按一个附加的分组键列进行了标记: