Как создать уникальный индекс в Dask DataFrame? - PullRequest
0 голосов
/ 06 июня 2019

Представьте, что у меня есть Dask DataFrame из read_csv или что-то в этом роде.

Как создать уникальный индекс для этого?

Примечание ***

reset_index создает монотонновозрастающий индекс в каждом разделе.Это означает (0,1,2,3,4,5, ...) для раздела 1, (0,1,2,3,4,5, ...) для раздела 2, (0,1,2, 3,4,5, ...) для раздела 3 и так далее.

Я бы хотел уникальный индекс для каждой строки.

1 Ответ

0 голосов
/ 06 июня 2019

Это мой подход (функция) для создания уникального индекса с map_partitions и действительно случайными числами, так как просто reset_index создает монотонно восходящий индекс в каждом разделе!

import sys
import random
from dask.distributed import Client

client = Client()

def createDDF_u_idx(ddf):

    def create_u_idx(df):
        rng = random.SystemRandom()
        p_id = str(rng.randint(0, sys.maxsize))

        df['idx'] = [p_id + 'a' + str(x) for x in range(df.index.size)]

        return df

    ddf = ddf.map_partitions(lambda df: create_u_idx(df), meta={...your_prev_columns.., 'idx': 'str'})
    ddf = client.persist(ddf)  # compute up to here, keep results in memory
    ddf = ddf.set_index('idx')

    return ddf
...