首页 > 解决方案 > 具有最大聚合性能的 Pandas groupby 函数很慢。groupby 性能提升

问题描述

我有一个大约有 16,000 行的数据框,我正在执行一列的最大聚合并将其按另一列分组。

df.groupby(['col1']).agg({'col2': 'max'}).reset_index()

耗时 1.97 秒。我想提高它的性能。请求您建议使用 numpy 或矢量化。

数据类型两列都是对象。

%%timeit
df.groupby(['col1']).agg({'col2': 'max'}).reset_index()

1.97 s ± 42 ms per loop (mean ± std. dev. of 7 runs, 1 loop each

标签: pythonpandasnumpydataframepandas-groupby

解决方案


我玩弄了数据类型并将 col2 的数据类型更改为整数,它显着减少了运行时间。

%%timeit
df['col2'] = df['col2'].astype(int)
df.groupby(['col1']).agg({'col2': 'max'}).reset_index()

6.58 ms ± 74.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

整数的聚合将比字符串快。


推荐阅读