将 np.random.rand 应用于组 - 优化问题

Apply np.random.rand to groups - optimization issue

需要优化单行代码,在计算过程中将执行数万次,因此时间成为问题。看似简单实则卡住了

行是:

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

所以我想给每个组分配相同的随机数和"ungroup"。由于使用此实现多次调用 rand(),因此代码非常低效。

有人可以帮忙矢量化吗?

试试这个!

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。