Python中的溢出错误。将函数应用于日期列

时间:2016-01-26 06:23:28

标签: python apply

我试图将一个函数应用于日期列表,但是我一直遇到溢出错误。

我尝试将该功能应用于单个单元格,甚至尝试将其应用于列的最大值以查看是否为错误。然而,这不是错误,我现在还不知道该去哪里。

这是数据框中的我的专栏,Days_Until:

Index  Days
0     -50 days
1     -26 days
2      13 days
3     -53 days
4     -42 days
5     -22 days
6     -16 days
7      53 days
8     -57 days
9     -48 days
10    -40 days
11    -26 days
12    -22 days
13     14 days
14    -54 days
15    -47 days
16    -27 days
17     -1 days
18     18 days
19     42 days
20    -56 days
21    -53 days
22    -43 days
23    -30 days
24    -16 days
25     20 days
26    -54 days
27    -47 days
28    -40 days
29    -26 days
        ...   
704   -40 days
705   -51 days
706   -47 days
707   -44 days
708   -43 days
709   -44 days
710   -11 days
711    26 days
712    91 days
713   -52 days
714   -34 days
715   -54 days
716   -51 days
717    47 days
718   -50 days
719   -44 days
720   -28 days
721   -49 days
722   -41 days
723   -35 days
724   -34 days
725   -28 days
726   -20 days
727    41 days
728   -50 days
729    -8 days
730   -49 days
731    44 days
732   -43 days
733   -45 days
Name: time_weight_spt9, dtype: timedelta64[ns]

以下是我要应用于该列的函数:

from math import pow
def exp_decay(days):
    days = getattr(days, "days", days)
    return pow(.5, (days/30.))

我知道这个功能有效,因为我在Days_Until [" Days"]的最大值上测试了它。

Days_Until["Days"].max()
>> 185

return pow(.5, (Days_Until["Days"].max()/30.))
>> 0.0139202924709

所以我不知道为什么会这样:

Days_Until["Days"].apply(exp_decay)
>> OverflowError: math range error

当我在我的列上运行apply函数时。

建议?

同样,-59的最小值,所以我认为这不会对结果产生影响。

*编辑*

正如furas所说:

 from math import pow
 def exp_decay(days):
    print days
    days = getattr(days, "days", days)
    return pow(.5, (days/30.))

现在我得到一行输出:

-4320000000000000 nanoseconds

同样的错误:

OverflowError: math range error

我的日子是以纳秒为单位吗?

0 个答案:

没有答案
相关问题