通过自定义聚合功能提高熊猫分组的效率

时间:2018-10-05 11:47:35

标签: python pandas performance aggregation

我的数据框不太大(形状在2000x10000范围内的某个地方)。

我正在尝试groupby列,并平均前N个非空条目:

例如

def my_part_of_interest(v,N=42):
   valid=v[~np.isnan(v)]
   return np.mean(valid.values[0:N])

mydf.groupby('key').agg(my_part_of_interest)

现在.agg(np.nanmean)花费很长时间(数十分钟)  而是以秒为单位。

如何使其运行更快?

1 个答案:

答案 0 :(得分:2)

要考虑的一些事情:

  1. 通过单次操作将nan条目拖放到整个df上比在成组的数据集mydf.dropna(subset=['v'], inplace=True)上进行操作要快
  2. 使用.head切片mydf.groupby('key').apply(lambda x: x.head(42).agg('mean')

我认为那些结合起来可以使事情有所优化,并且对熊猫来说更惯用。