好像以前应该问过的问题,但是我找不到。所以就到这里了。
数据:
-list子列表的主(长度 ~= 16,000,000)(每个长度最多 500 个项目)str
目标:
- 有效地打乱主列表中的每个子列表。
我已经尝试了直for-loop,列表理解,熊猫Series.apply(),pandarallel和dask数据帧.apply()和.map_partition()方法。
一个for循环大约需要15 分钟。pd.series.apply(), dask.series.apply(), 和dask.series.map_partition()所有人都设法做到了6 分钟多一点。
我的问题是“我可以更快地实现改组吗”?制作新副本或原地改组都是可以接受的。
以下是我的尝试:
def normal_shuffle(series):
output = series.tolist()
length = len(output)
for i in range(length):
random.Random().shuffle(output[i])
return output
def shuffle_returned(a_list):
new_list = a_list
random.shuffle(new_list)
return new_list
def shuffle_partition(a_partition):
return a_partition.apply(shuffle_returned)
%time shuffled_for = normal_shuffle(test_series)
%time shuffled_apply = test_series.apply(shuffle_returned)
pandarallel.initialize(progress_bar=False, …Run Code Online (Sandbox Code Playgroud)