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