Использование np.random.normal
напрямую, чтобы воспользоваться векторными операциями numpy, намного быстрее, чем использование функции apply
от panda:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'Mean': np.arange(0., 1000000., 1.),
'StdDev': np.arange(0., 1000000., 1.)/1000000. + 1.,
})
df['RV'] = np.random.normal(loc=df['Mean'], scale=df['StdDev'])
Для фрейма данных с 1M строками этот подход выполняется на моем компьютере примерно за 60 мскомпьютер, против 2 секунд для применения подхода, то есть примерно в 30 раз быстрее.
Я не вижу причин, почему это не сработало бы в вашем случае.