#Посмотрим, есть ли случаи, когда refundable_support или nonrefundable_support не нулевые, а budget=0 err_budget = data.query('(budget < refundable_support) or (budget < nonrefundable_support)') len(err_budget) #Т.к. бюджет не м.б. = 0, если поддержка не равна 0, то можно попробовать заполнить значения в #столбце "бюджет" (где бюджет =0, а одна из поддержек не равно 0) по формуле: #"(возврат.поддержка + невозврат.поддержка) / на медианное значение доли поддержки в бюджете". import numpy as np budget_less_5mln = data.query('budget < 5000000') len(budget_less_5mln) #Есть 17 строк где бюджет сильно меньше гос.поддержки и доля гос.поддержки в бюджете будет там слишком большая. Поэтому рассчитаем медиану доли гос.подержки без этих значений budget_more_5mln = data.query('budget > 5000000') len(budget_more_5mln) dolyaya = (((budget_more_5mln['refundable_support'] + budget_more_5mln['nonrefundable_support']) / budget_more_5mln['budget']) * 100).apply(np.ceil) med = dolyaya.median() med data.loc[(data['budget'] < data['refundable_support']) | (data['budget'] < data['nonrefundable_support']), 'budget'] = (data['refundable_support'] + data['nonrefundable_support']) / med #И заменим в этих 17 строках значение бюджета (где budget < 5000000) так же по формуле "(возврат.поддержка + невозврат.поддержка) * на медианное значение доли поддержки в бюджете" data.loc[(data['budget'] < 5000000) & (data['budget'].notna()), 'budget'] = (data['refundable_support'] + data['nonrefundable_support']) / med