Я устанавливаю систему ранжирования, и в основном у меня есть поле с именем site_fees, которое составляет 10% от общего количества для рассмотрения. Плата за сайт 0 получит все 10 баллов. Я хочу рассчитать, сколько очков получат ненулевые поля, но я изо всех сил пытаюсь это сделать.
Мой первоначальный подход состоял в том, чтобы разделить фрейм данных на 2 фрейма данных (dfb, где site_fees - 0, и dfa, где они> 0) и рассчитать среднее значение для dfa, присвоить рейтинг для dfb равным 10, а затем объединить два.
Код выглядит следующим образом:
dfSitesa = dfSites[dfSites['site_fees'].notnull()]
dfSitesb = dfSites[dfSites['site_fees'].isnull()]
dfSitesa['rating'] = FeeWeight * \
dfSitesa['site_fees'].min()/dfSitesa['site_fees']
dfSitesb['rating'] = FeeWeight
dfSites = pd.concat([dfSitesa,dfSitesb])
Это приводит к выводу, однако результаты dfa неверны, так как минимум dfa равен 5000 вместо 0, поэтому рейтинг сайта с комиссией в 5000 долларов составляет 10 (максимум, не верный). Что я делаю не так?
Минимальное ненулевое значение site_fee составляет 5000, а максимальное - 15000. Исходя из этого, можно ожидать общую систему ранжирования, такую как:
15000 | 0
10000 | 3.3
5000 | 6.6
0 | 10