【问题标题】:increase efficiency of pandas groupby with custom aggregation function通过自定义聚合功能提高 pandas groupby 的效率
【发布时间】:2019-03-10 22:10:01
【问题描述】:

我有一个不太大的数据框(就形状而言,在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) 而是以秒为单位。

如何让它运行得更快?

【问题讨论】:

    标签: python pandas performance aggregation


    【解决方案1】:

    需要考虑的一些事项:

    1. 通过单个操作删除整个 df 上的 nan 条目比在分组数据集块上删除更快 mydf.dropna(subset=['v'], inplace=True)
    2. 使用 .head 切片 mydf.groupby('key').apply(lambda x: x.head(42).agg('mean')

    我认为这些结合起来可以稍微优化一些东西,而且它们更适合 pandas。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 2019-06-08
      相关资源
      最近更新 更多