ValueError: Неверное количество пройденных элементов 5, размещение подразумевает 1 - PullRequest
1 голос
/ 05 мая 2019

Нажмите, чтобы просмотреть образец данных Я пытаюсь заменить значения Item_Visibility на Item_Visibility каждого Item_Identifier (каждого типа элемента).Но выдает ошибку:

ValueError: Wrong number of items passed 5, placement implies 1

data['Item_Visibilty'] = data.groupby('Item_Identifier').transform(
        lambda x: x.replace(x.mean()))

Ответы [ 2 ]

1 голос
/ 05 мая 2019

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

Отвечая на ваш вопрос:

# sample data creation
data = pd.DataFrame(np.random.rand(4000,2),columns=['Item_Identifier','Item_Visibility'])
data.loc[:,'Item_Identifier']= data.loc[:,'Item_Identifier'].apply(
        lambda x: 'id1' if x> 0.4 else 'id2')
# creating map_table so we could map values
map_table = data.groupby('Item_Identifier').mean()
# mapping values
data.loc[:,'Item_Visibility'] = data.loc[:,'Item_Identifier'].map(
        map_table.to_dict()['Item_Visibility'])

Надеюсь, это поможет!

0 голосов
/ 05 мая 2019

Использовать сводную таблицу -

visibility_avg = data.pivot_table(values = 'Item_Visibility', index = 'Item_Identifier')
#imputing  0 values with mean visibility of products
miss_bool = data['Item_Visibility'].isnull()
data.loc[miss_bool,'Item_Visibilty'] = data.loc[miss_bool,'Item_Identifier'].apply(lambda x: visibility_avg(x))
...