我有一个大约有16000行的数据帧,我对一列执行最大聚合,并将其按另一列分组。
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
我尝试了数据类型,并将col2的数据类型更改为integer,这大大减少了运行时间。
%%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)
整数的聚合将比字符串更快。