Pandas agg具有大量按键的自定义功能

2024-10-03 19:25:03 发布

您现在位置:Python中文网/ 问答频道 /正文

当钥匙数超过10k时,速度很慢,这是很常见的。有没有办法加快速度?在

import pandas as pd

n = 10*1000000
ngroup = 10000
m = n//ngroup

d = pd.DataFrame({"a":range(n), "b":list(range(ngroup))*m})

%timeit dagg = d.groupby("b")["a"].agg(["mean","std"]).reset_index()
#700 ms

#custom function
%timeit dagg = d.groupby("b")["a"].agg(lambda x: x.mean()+x.std()).reset_index()
#4.37 s

R的比较数据表在

^{pr2}$

Tags: indexrangemean速度aggpd钥匙std
1条回答
网友
1楼 · 发布于 2024-10-03 19:25:03

如果只达到你所需要的(总和平均值和标准差),我认为在groupby之外做更有效

%timeit d.groupby("b")["a"].agg(["mean","std"])
1 loop, best of 3: 698 ms per loop


%timeit d.groupby("b")["a"].agg(["mean","std"]).sum(1)
1 loop, best of 3: 704 ms per loop

您的:

^{pr2}$

相关问题 更多 >