Member 13436040 Ответов: 0

Фрейм данных Python .loc keyerror


У меня есть фрейм данных со столбцами "ProductID" и "Balance".
Некоторые столбцы "баланс" имеют значения =0 (df['Balance']=0).
Мой фрейм данных содержит различные продукты.
Индекс ProductID Balance
1 10 100
2 20 0
3 30 200
4 20 150
5 20 240
6 40 100
7 30 200

Я хочу вменить нулевой баланс по индексу 2 со средним балансом на основе идентификатора продукта=20 ((0 +150 + 240)/3 =130) .

Я использую приведенный ниже код:
1) сначала получить balance_average на основе ProductID.

balance_average = ДФ.сводная_таблица(значения= "баланс", "Кодтовара" индекса='')

2) идентификация строк нулевого баланса

zero_bool = (df ['Balance'] == 0)

3) Применение balance_average

ДФ.Лок[zero_bool,'сумма'] = ДФ.Лок[zero_bool,'идентификатор'].применить(лямбда-х: balance_average[х])

Я получаю KeyError: '20'.
20-это соответствующий продукт первого столбца нулевого баланса.
Может ли кто-нибудь сказать мне, что не так с приведенным выше кодом?

Что я уже пробовал:

вменение нулевого баланса в средний баланс аналогичных товаров.

0 Ответов