Как создать перестановку Dask DataFrame - PullRequest
0 голосов
/ 19 ноября 2018

Я знаю, что эта тема обсуждается справедливо, но мне все еще не совсем ясно, каков самый стандартный способ создания перестановки Dask DataFrame.

Чтобы создать случайный индекс в нераспределенном виде, первое, что кто-то, вероятно, попробует, будет:

df['random_index'] = np.random.permutation(len(df))

Но в контексте Dask len(df) будетвызвать вычисление.Мне не ясно, имеет ли смысл использовать такое вычисление для определения длины.Вместо этого, я вижу альтернативу, сделать что-то вроде

ds = ds.map(
    lambda (col_1, col_2): (
         <random_string>, col_1, col_2
    )
)

, это будет лениво создавать новый псевдослучайный столбец, который можно использовать как в индексе.Вы видите что-то не так с этим?Я предполагаю, что для создания случайных строк кто-то должен использовать хороший алгоритм хеширования, чтобы обеспечить равномерное распределение ключей.Я думал о чем-то подобном

import hashlib
from random import randint  

hashlib.sha1(bytes(randint(1, 1e16))).hexdigest()

, который достаточно быстр и будет производить равномерно распределенные ключи.Дайте мне знать, если я попадаю в какую-либо очевидную ловушку (?)

edit

на самом деле нет причин использовать строку вместо простого целого числа.вам просто нужно убедиться, что вы производите гораздо большие индексы, чем размер вашего набора данных

...