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

2024-10-17 06:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个函数应用于日期列表,但是我不断得到一个溢出错误。你知道吗

我试过将函数应用于单个单元格,甚至应用于列的最大值,以查看这是否是错误。然而,这并不是错误,我也不知道该怎么办。你知道吗

以下是我在数据框中的列,Days\u 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”]。你知道吗

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函数时。你知道吗

建议?你知道吗

同样,min-in-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

我的日子被解读为纳秒吗?你知道吗


Tags: 函数fromimportreturndef错误mathdays