Python TimeDelta Code在Python IDE中工作,但在我通过SPSS运行时则不行

时间:2017-09-12 14:29:29

标签: python spss

我试图计算一天中的哪个会计周,并且我的代码在Spyder和PythonTutor中正确运行,但是当我尝试通过SPSS的Python功能运行它时,我得到了一个不同的错误。

Spyder中的代码:

from datetime import date, timedelta
VisitDate=date(2017,9,10)

def WhichWeek(DateOfVisit):
   StartDate=date(2017,9,1)
   EndDate=StartDate+timedelta(days=+6)
   Beginning=StartDate
   End=EndDate
   NumberWeeks=10
   for i in range(NumberWeeks):
      if(DateOfVisit>=Beginning and DateOfVisit<=End:
         print('It worked',i)
         return i
      else:
         print ('It failed', i, Beginning, End)
         Beginning=Beginning+timedelta(days=+7)
         End=End+timedelta(days=+7)

WhichWeek(VisitDate)

运行并返回预期值。 (打印语句只是为了帮助排除故障)。

但是,当我使用Python扩展程序在SPSS中运行它时:

begin program.
def WhichWeek(DateOfVisit):
   from datetime import date, timedelta
   StartDate = date(2016,9,1)
   EndDate=StartDate+timedelta(days=+6)
   Beginning=StartDate
   End=EndDate
   NumberWeeks=10
   for i in range(NumberWeeks):
       if DateOfVisit>=Beginning and DateOfVisit<=End:
           print('It worked',i)
           return i
       else:
           print ('It failed', i, Beginning, End)
           Beginning=Beginning+timedelta(days=+7)
           End=End+timedelta(days=+7)

end Program.

SPSSINC TRANS RESULT=Week_Test /FORMULA WhichWeek(VisitDate).
EXECUTE.
FREQUENCIES VARIABLES=Week_Test
  /FORMAT=DFREQ
  /ORDER=ANALYSIS.

它现在给了我错误&#34;论坛引用未定义的变量或无法评估:无法将datetime.date与float进行比较

VisitDate是我的SPSS数据集中已定义的变量,由于我在Spyder中没有收到此错误,因此无法继续进行故障排除。

编辑:我将Spyder版本从VisitDate1更改为VisitDate以限制混乱。我还应该说,在Spyder中,我会在静态日期运行它,以测试它是否正确识别周(2017-09-10)而不是实际的数据集。在SPSS中,我是针对数据集运行的。

0 个答案:

没有答案