【问题标题】:ZeroDivisionError: float division error while calculating percentile rank in pandas dataframeZeroDivisionError:在熊猫数据框中计算百分位排名时出现浮点除法错误
【发布时间】:2019-03-27 20:07:10
【问题描述】:

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

但有些变量在 value1 中只有 NaN 值。所以我得到 ZeroDivisionError: float division error 。如何解决这个问题

   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: 浮点除法

【问题讨论】:

  • 在我这边工作正常
  • 让我再检查一次。数据框有 30000 行。我只复制了几行。

标签: python pandas dataframe percentile


【解决方案1】:

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

from sys.float_info import epsilon

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    • 2014-04-15
    • 2015-10-07
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多