Применить np.random.rand к группам - вопрос оптимизации - PullRequest
0 голосов
/ 27 декабря 2018

Необходимо оптимизировать одну строку кода, которая будет выполняться десятки тысяч раз во время вычислений, и, следовательно, время становится проблемой.Кажется, что это просто, но действительно застряло.

Строка:

df['Random']=df['column'].groupby(level=0).transform(lambda x: np.random.rand())

Поэтому я хочу назначить одно и то же случайное число для каждой группы и "разгруппировать".Поскольку rand () вызывается много раз с использованием этой реализации, код очень неэффективен.

Может ли кто-нибудь помочь в векторизации этого?

1 Ответ

0 голосов
/ 27 декабря 2018

Попробуйте!

df = pd.DataFrame(np.sort(np.random.randint(2,5,50)),columns=['column'])
uniques =df['column'].unique()
final = df.merge(pd.Series(np.random.rand(len(uniques)),index=uniques).to_frame(),
                 left_on='column',right_index=True)

Вы можете сохранить uniques и затем каждый раз запускать последнюю строку, чтобы получить новые случайные числа и присоединиться с помощью df.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...