You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas DataFrame行遍历加速及np.vectorize用法纠错求助

问题:大列数DataFrame逐行应用含循环函数的提速与np.vectorize用法纠正

我有一个100行(后续行数会增加)、2689列的DataFrame(df),需要对每行应用函数fn1(row,a,b),该函数内部包含无法避免的循环。我尝试了四种方法来提速,但未发现耗时差异:

  • 朴素方法:
for i in df.values:
    # 执行操作
  • 使用apply:
df['f']= df.apply(lambda row: fn1(row,a,b), axis=1, raw=True)
# 5*2689规模的df耗时1.2
  • 直接传入values:
df['f']=fn1(df.values,a,b)
# 耗时相同
  • 使用np.vectorize:
vectfunc=np.vectorize(fn1)       
df['f'] = vectfunc(df[df.columns[0:]],a, b)  
# 或
df['f'] = vectfunc(df,a, b)

第四种方法报错'numpy.float64' object is not iterable,原因是fn1内部会将传入的行转为列表,但当前传入的是单个元素而非整行。

我想寻求提速方案,若当前数据规模太小无法判断差异,至少请纠正第四种方法的用法。另外,我了解到np.vectorize本身不提速,请问能否使用Pandas向量化?

内容的提问来源于stack exchange,提问作者knowledge_seeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:18:17