Фрейм данных 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-это соответствующий продукт первого столбца нулевого баланса.
Может ли кто-нибудь сказать мне, что не так с приведенным выше кодом?
Что я уже пробовал:
вменение нулевого баланса в средний баланс аналогичных товаров.