在 Pandas 数据框中使用截断泊松
Using Truncated Poisson in Pandas data frame
在@Welcome to Stack Overflow 的帮助下,我设法使用上层 limit.When 截断了泊松分布 我使用了所谓的 truncated Poisson 函数,它是用户定义的函数,它使用单值输入,我在下面的代码中显示了它:
import scipy.stats as sct
import pandas as pd
def truncated_Poisson(mu, max_value, size):
temp_size = size
while True:
temp_size *= 2
temp = sct.poisson.rvs(mu, size=temp_size)
truncated = temp[temp <= max_value]
if len(truncated) >= size:
return truncated[:size]
mu = 2.5
max_value = 10
print(truncated_Poisson(mu, max_value, 1))
不幸的是,当我将它应用到数据框中时,我抛出了一个错误,如下所示:
data = pd.DataFrame()
data['Name'] = ['A','B','C','D','E']
data ['mu'] = [0.5,1.2,2,2.5,2.8]
max_value = 5
size = 1
data ['Pos'] = truncated_Poisson(data.mu,max_value,size = 1)
错误的说法是
ValueError: size does not match the broadcast shape of the parameters.
谁能告诉我如何在数据框中使用该函数?
谢谢
Zep.
据我了解,您想使用相同的参数和数据中的每个 mu
调用 truncated_Poisson
。例如,您可以使用 .apply
:
data['Pos'] = data.mu.apply(lambda mu: truncated_Poisson(mu, max_value, size=1))
>>> data
Name mu Pos
0 A 0.5 [0]
1 B 1.2 [0]
2 C 2.0 [3]
3 D 2.5 [4]
4 E 2.8 [3]
在@Welcome to Stack Overflow 的帮助下,我设法使用上层 limit.When 截断了泊松分布 我使用了所谓的 truncated Poisson 函数,它是用户定义的函数,它使用单值输入,我在下面的代码中显示了它:
import scipy.stats as sct
import pandas as pd
def truncated_Poisson(mu, max_value, size):
temp_size = size
while True:
temp_size *= 2
temp = sct.poisson.rvs(mu, size=temp_size)
truncated = temp[temp <= max_value]
if len(truncated) >= size:
return truncated[:size]
mu = 2.5
max_value = 10
print(truncated_Poisson(mu, max_value, 1))
不幸的是,当我将它应用到数据框中时,我抛出了一个错误,如下所示:
data = pd.DataFrame()
data['Name'] = ['A','B','C','D','E']
data ['mu'] = [0.5,1.2,2,2.5,2.8]
max_value = 5
size = 1
data ['Pos'] = truncated_Poisson(data.mu,max_value,size = 1)
错误的说法是
ValueError: size does not match the broadcast shape of the parameters.
谁能告诉我如何在数据框中使用该函数?
谢谢
Zep.
据我了解,您想使用相同的参数和数据中的每个 mu
调用 truncated_Poisson
。例如,您可以使用 .apply
:
data['Pos'] = data.mu.apply(lambda mu: truncated_Poisson(mu, max_value, size=1))
>>> data
Name mu Pos
0 A 0.5 [0]
1 B 1.2 [0]
2 C 2.0 [3]
3 D 2.5 [4]
4 E 2.8 [3]