Я предлагаю вам использовать np.random
, указав size
аргумент, который быстрее, чем цикл *
df['RAND'] = np.random.uniform(0,1, size=df.index.size)
Чтобы назначить L
s, вы можете использовать np.select
указание условий и значений
conditions = [df.RAND >=0.89, (df.RAND < 0.89) & (df.RAND >= 0.1), df.RAND < 0.1]
choices = ['L0', 'L1', 'L2']
df['L'] = np.select(conditions, choices)
Эти подходы лучше, чем циклический просмотр фрейма данных.Если вы перебираете фрейм данных, вы теряете всю мощь, которую библиотека pandas
вносит в таблицу;)
*
%timeit [random.uniform(0,1) for k in range(10000)]
3.41 ms ± 65.4 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit np.random.uniform(0,1, size=10000)
113 µs ± 2.36 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)