InvalidIndexError сопоставление ошибок серии dask - PullRequest
0 голосов
/ 10 июля 2020

Это сопоставление работает при вызове head в первых 100 строках:

ddf['val'] = ddf['myid'].map( val['val'] , meta=pd.Series(float) )

Но когда я пытаюсь сохранить в паркет:

ddf.to_parquet('myfile.parquet', 
               compression='snappy', 
               write_index=False,
               compute_kwargs={'scheduler':'threads'}
              )

Я получаю сообщение об ошибке: InvalidIndexError: Reindexing only valid with uniquely valued Index objects.

Но при проверке моего индекса (после преобразования в серию pandas) он уникален: val.index.duplicated().any() это False. Кроме того, индекс имеет тот же набор, что и столбец фрейма данных, в который он отображается: myid. В индексе нет значений NULL, Nans или Nones. Индекс - int64.

Обновление: любопытно, что если я загружаю каждый паркетный файл для исходного ddf по одному, это не вызывает ошибки. Если я загружаю более одного файла за раз, возникает ошибка.

1 Ответ

0 голосов
/ 10 июля 2020

Это могло быть ошибкой в ​​движке fastparquet. Я сохранил базовые фреймы данных с помощью pyarrow и использовал to_parquet с engine='pyarrow', и теперь все работает:

ddf.to_parquet('myfile.parquet', 
               engine='pyarrow',
               compression='snappy', 
               write_index=False,
               compute_kwargs={'scheduler':'threads'}
              )
...