1

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

该行是:

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

所以我想为每个组分配相同的随机数并“取消分组”。由于使用此实现多次调用 rand(),因此代码非常无效。

有人可以帮助向量化吗?

4

1 回答 1

2

试试这个!

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。

于 2018-12-27T12:58:49.987 回答