所以我试图理解为什么 apply
的行为在多个函数时真的很慢。考虑:
df = pd.DataFrame(
np.random.rand(1000, 12),
columns=[f'cols_{i}' for i in range(12)]
)
还有一些时间比较:
%timeit df.apply('mean', axis=1)
# 391 µs ± 6.35 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit df.apply('max', axis=1)
# 400 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit df.apply(['mean', 'max'], axis=1)
# 784 ms ± 13.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
所以,我的假设是,在第一种和第二种情况下,该函数同时应用于数据帧,而在第三种情况下,逐行计算 mean
和 max
。另一方面,agg
也遇到了同样的问题。
有什么想法吗?