Dask DataFrame после Apply не может переиндексировать с дублированной оси - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь изменить значения nan для item_price на среднее значение на основе item_id в следующем фрейме данных dask:

all_data['item_price'] = all_data[['item_id','item_price']].groupby('item_id')['item_price'].apply(lambda x: x.fillna(x.mean()))

All_data.head()

К сожалению, я получаю следующую ошибку:

ValueError: cannot reindex from a duplicate axis

Любая идея, как избежать этой ошибки или каким-либо другим способом изменить значения nan для средних значений для кадра данных dask?

1 Ответ

0 голосов
/ 01 марта 2019

Я нашел решение проблемы.Вместо этого можно использовать Fillna вместе с картой:

all_data['item_price'] = all_data['item_price'].fillna(
    all_data['item_id'].map(
        all_data.groupby('item_id')['item_price'].mean().compute()
    )
)

Это избавит от проблемы дублирования осей.Помните, что вы должны использовать compute, как видно из кода внутри функции map, чтобы он работал без ошибок.

...