gpt4 book ai didi

python - 为什么 np.where 比 pd.apply 快

转载 作者:太空狗 更新时间:2023-10-29 21:30:45 24 4
gpt4 key购买 nike

示例代码在这里

import pandas as pd
import numpy as np

df = pd.DataFrame({'Customer' : ['Bob', 'Ken', 'Steve', 'Joe'],
'Spending' : [130,22,313,46]})

#[400000 rows x 4 columns]
df = pd.concat([df]*100000).reset_index(drop=True)

In [129]: %timeit df['Grade']= np.where(df['Spending'] > 100 ,'A','B')
10 loops, best of 3: 21.6 ms per loop

In [130]: %timeit df['grade'] = df.apply(lambda row: 'A' if row['Spending'] > 100 else 'B', axis = 1)
1 loop, best of 3: 7.08 s per loop

问题取自此处:https://stackoverflow.com/a/41166160/3027854

最佳答案

我认为 np.where 更快,因为使用了 numpy 数组向量化方式,而 pandas 是建立在这个数组上的。

df.apply 很慢,因为它使用了 loops

vectorize 操作最快,然后是 cython routines,然后是 apply

查看此 answer更好地解释 pandas 的开发者 - Jeff。

关于python - 为什么 np.where 比 pd.apply 快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41166348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com