ZeroDivisionError: ошибка деления числа с плавающей точкой при расчете ранга процентиля в кадре данных панд - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь вычислить числовые ранги данных между подгруппами, сгруппированными по «Переменная».

Но некоторые переменные имеют только значения NaN в значении1.Итак, я получаю ZeroDivisionError: ошибка деления поплавка .Как решить эту проблему

   df1.assign(percentile=df1.groupby("variable")['value1'].rank(pct=True)

Данные в фрейме данных df1:

         Date        variable         value1
0     2013-09-30   VTL US Equity     3.56
1     2008-02-29   GTXI US Equity      NaN
2     2007-07-31   OVID US Equity      NaN
3     2001-10-31   HOV US Equity     4.8548
4     2014-12-31   HOV US Equity     2.2006
5     2015-01-31   HOV US Equity     1.7636
6     2015-02-28   HOV US Equity     1.9174

Ошибка: Файл "pandas_libs \ groupby_helper.pxi", в pandas._libs.groupby.group_rank_float64 ZeroDivisionError: деление с плавающей точкой

1 Ответ

1 голос
/ 27 марта 2019

Один из вариантов - просто заменить NaN значения в этом столбце на чрезвычайно малые значения перед запуском операции, используя Dataframe.fillna().

from sys.float_info import epsilon

df1.assign(
    percentile = df1.fillna(value={'value1': epsilon}).groupby("variable")['value1'].rank(pct=True)
)
...