当前位置: 代码迷 >> python >> 在熊猫数据框中使用截断的泊松
  详细解决方案

在熊猫数据框中使用截断的泊松

热度:15   发布时间:2023-06-27 21:45:55.0

在@ Welcome to Stack Overflow的帮助下,我设法使用上限截断了Poisson分布。当我使用所谓的截断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.

谁能建议我如何在数据框中使用该功能?

谢谢

泽普。

据我了解,您想使用相同的参数和数据中的每个mu调用truncated_Poisson 例如,可以使用.apply来执行此.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]
  相关解决方案