Python 在Pandas数据帧中使用截断Poisson

Python 在Pandas数据帧中使用截断Poisson,python,pandas,dataframe,poisson,Python,Pandas,Dataframe,Poisson,在@Welcome to Stack Overflow的帮助下,我成功地使用上限截断了泊松分布。当我使用所谓的截断泊松函数时,这是一个用户定义的函数,它使用单值输入,我在下面的代码中显示了这一点: import scipy.stats as sct import pandas as pd def truncated_Poisson(mu, max_value, size): temp_size = size while True: temp_size *= 2

在@Welcome to Stack Overflow的帮助下,我成功地使用上限截断了泊松分布。当我使用所谓的截断泊松函数时,这是一个用户定义的函数,它使用单值输入,我在下面的代码中显示了这一点:

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))
错误语句是

ValueError: size does not match the broadcast shape of the parameters.
有人能告诉我如何在dataframe中使用该函数吗

谢谢


Zep.

据我所知,您希望使用相同的参数和数据中的每个mu调用截断的_Poisson。例如,您可以使用.apply:


谢谢谢谢你的建议。我将把它应用到我的数据框中。嗨@w-m,我可以知道如何移除Pos中的方括号吗?嗨,我找到了。我只是把它转换成int。
ValueError: size does not match the broadcast shape of the parameters.
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]