ZeroDivisionError:计算熊猫数据框中的百分位等级时,浮点除法错误

时间:2019-03-27 20:07:11

标签: python pandas dataframe percentile

我正在尝试计算按“变量”分组的子组之间的数值数据等级。

但是某些变量在value1中只有NaN值。所以我收到 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 个答案:

答案 0 :(得分:1)

一种选择是在使用Dataframe.fillna()运行操作之前,只需用极小的值替换该列中的NaN值。

from sys.float_info import epsilon

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