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

Pandas创建新列时如何逐行应用自定义Monte Carlo概率函数

问题原因

你直接向MC_prob传入整列的df.Predict、df.StDev序列时,函数会将整列作为整体计算仅返回1个标量值,因此赋值后所有行的ProbOver3都是相同值。
另外你当前的MC_prob存在冗余逻辑:循环M次计算的都是完全相同的norm.sf(3, mu, sigma)结果,最终均值和单次计算结果完全一致,循环没有实际作用。如果后续需要增加随机抽样逻辑可以保留循环,否则可以直接删去循环简化代码。

实现逐行计算的方案

方案1:用apply逐行调用函数

如果需要保留现有MC_prob函数的结构,可通过apply指定axis=1逐行传参调用:

df['ProbOver3'] = df.apply(lambda row: MC_prob(M=10000, mu=row['Predict'], sigma=row['StDev']), axis=1)

方案2:向量化计算(效率更高)

scipy.stats.norm.sf本身支持数组类型的入参,不需要逐行调用也不需要循环,一行代码即可得到所有行的结果,运行效率远高于逐行apply:

df['ProbOver3'] = norm.sf(3, df['Predict'], df['StDev'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:24:03