применение случайного распределения в каждой строке фрейма данных

У меня есть следующий кадр данных

import numpy as np
import pandas as pd
import scipy as sc
import scipy.stats as sct    
d= {'col1': [1, 2,5,0.6], 'col2': [3, 4,1,0.8]}
df = pd. DataFrame(data=d)

Я хочу добавить два новых столбца в этот кадр данных, но элемент двух новых столбцов представляет собой случайное распределение Пуассона col1 и col2. Я использовал следующий код для создания новых столбцов. (столбец3 и столбец4).

df ['col3']  = int(sct.poisson.rvs(df.col1,size=1))
df ['col4']  = int(sct.poisson.rvs(df.col2,size=1))

Это пример моего фрейма данных, который довольно велик и содержит 3 800 000 строк. Я могу сгенерировать его, используя цикл for. это заняло у меня слишком много времени.

Как можно сгенерировать случайное распределение Пуассона на основе фрейма данных без использования цикла? Спасибо

Зеп


person Zephyr    schedule 20.06.2018    source источник


Ответы (1)


Попробуйте просто использовать:

df['col3'] = sct.poisson.rvs(df.col1)
df['col4'] = sct.poisson.rvs(df.col2)
person Leo    schedule 20.06.2018
comment
Привет Лео, спасибо за ответ, и это работает для этого примера. Когда я применил его к своей программе, он показал следующую ошибку: Невозможно преобразовать данные массива из dtype ('O') в dtype ('float64') в соответствии с правилом «безопасно». - person Zephyr; 20.06.2018
comment
@Зефир, пожалуйста. Если это ответило на ваш вопрос, я был бы признателен, если бы вы любезно приняли ответ. - person Leo; 20.06.2018