Python-将SciPy Beta Distribution应用于Pandas DataFrame的所有行

在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分布应用于每一行,并将结果追加为新列?

解决方法:

考虑到我怀疑大熊猫适用于所有行,并且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
上一篇:sklearn中的2D KDE带宽与scipy中的带宽之间的关系


下一篇:python-在SciPy / NumPy中查找复杂函数的零