Как добавить индексный столбец в Dask при чтении из CSV? - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь обработать довольно большой набор данных, который не помещается в память, используя Pandas при его одновременной загрузке, поэтому я использую Dask. Однако у меня возникают трудности при добавлении уникального столбца идентификатора в набор данных, прочитанный при использовании метода read_csv. Я продолжаю получать сообщение об ошибке (см. Код). Я пытаюсь создать столбец индекса, чтобы я мог установить этот новый столбец в качестве индекса для данных, но, похоже, ошибка говорит мне сначала установить индекс перед созданием столбца.

CODE

df = dd.read_csv(r'path\to\file\file.csv')  # File does not have a unique ID column, so I have to create one.
df['index_col'] = dd.from_array(np.arange(len(pc_df)))  # Trying to add an index column and fill it
# ValueError: Not all divisions are known, can't align partitions. Please use `set_index` to set the index.

Обновление

Использование range(1, len(df) + 1 изменило ошибку на: TypeError: Назначение столбца не поддерживает диапазон типов

1 Ответ

2 голосов
/ 24 октября 2019

Правильно, трудно узнать количество строк в каждом фрагменте CSV-файла, не читая его, поэтому трудно создать индекс типа 0, 1, 2, 3, ..., если набор данных охватывает несколько разделов.

Один подходбыло бы создать столбец из них:

df["idx"] = 1

, а затем вызвать cumsum

df["idx"] = df["idx"].cumsum()

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

...