Я столкнулся с очень странной ошибкой, связанной с назначением нового столбца существующему фрейму данных dask. Учитывая приведенный ниже минимальный пример,
import pandas as pd
from dask import dataframe as dd
from dask import array as da
foo = dd.from_pandas(pd.DataFrame({'number':list(range(10))}), chunksize=2)
add_me = ["N/A" for _ in range(len(foo.index))]
add_me = da.from_array(add_me, chunks='auto').compute()
Я ожидаю, что следующее будет работать нормально
foo = foo.assign(added=lambda x: add_me[x['number']]).compute()
Однако, это выдает следующую ошибку:
ValueError: Length of values does not match length of index
Когда я сначала вычисляю фрейм данных, а затем добавляю столбец, используя тот же синтаксис (только потом в нативном pandas), он прекрасно работает:
foo = foo.compute()
foo = foo.assign(added=lambda x: add_me[x['number']])
foo
>>>>> number added
0 0 N/A
1 1 N/A
2 2 N/A
3 3 N/A
4 4 N/A
5 5 N/A
6 6 N/A
7 7 N/A
8 8 N/A
9 9 N/A
Я что-то здесь упустил?
Я прочитал следующий связанный пост ( Ошибка задания: длина значений не соответствует длине индекса ), но не нашел полезного совета.