我试图将一个函数应用于日期列表,但是我一直遇到溢出错误。
我尝试将该功能应用于单个单元格,甚至尝试将其应用于列的最大值以查看是否为错误。然而,这不是错误,我现在还不知道该去哪里。
这是数据框中的我的专栏,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
我的日子是以纳秒为单位吗?