在 SciPy 中,可以按如下方式实现 beta 分布:
x=640495496
alpha=1.5017096
beta=628.110247
A=0
B=148000000000
p = scipy.stats.beta.cdf(x, alpha, beta, loc=A, scale=B-A)
现在,假设我有一个包含 x、alpha、beta、A、B 列的 Pandas 数据框。如何将 beta 分布应用于每一行,并将结果附加为新列?
最佳答案
鉴于我怀疑 pandas apply 只是循环遍历所有行,并且 scipy.stats 分布在每次调用中都有相当多的开销,我会使用矢量化版本:
>>> from scipy import stats
>>> df['p'] = stats.beta.cdf(df['x'], df['alpha'], df['beta'], loc=df['A'], scale=df['B']-df['A'])
>>> df
A B alpha beta x p
0 0 148000000000 1.501710 628.110247 640495496 0.858060
1 0 148000000000 1.501704 620.110000 640495440 0.853758
关于Python - 将 SciPy Beta Distribution 应用于 Pandas DataFrame 的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44111278/