Python 比较两个日期时出错
尝试在Python中比较两个日期。当我运行type()检查时,两者都显示为Python 比较两个日期时出错,python,date,datetime,Python,Date,Datetime,尝试在Python中比较两个日期。当我运行type()检查时,两者都显示为 然而,当我对这两个日期进行简单检查时,我得到以下错误: AttributeError:'datetime.date'对象没有属性'date' 谁能告诉我我做错了什么吗。代码如下: d_today = date.today() oldestDate = d_today - BDay(750) avgArray2 = [x for x in avgArray if x[0] >= oldestDate.date()]
然而,当我对这两个日期进行简单检查时,我得到以下错误:
AttributeError:'datetime.date'对象没有属性'date'
谁能告诉我我做错了什么吗。代码如下:
d_today = date.today()
oldestDate = d_today - BDay(750)
avgArray2 = [x for x in avgArray if x[0] >= oldestDate.date()]
print type(oldestDate.date())
print type(avgArray[0][0])
以及输出:
<type 'datetime.date'>
<type 'datetime.date'>
avgArray2 = [x for x in avgArray if x[0].date() >= oldestDate.date()]
AttributeError: 'datetime.date' object has no attribute 'date'
avgArray2=[x代表avgArray中的x,如果x[0].date()>=oldestDate.date()]
AttributeError:'datetime.date'对象没有属性'date'
关于如何构建“avgArray”的完整代码:
d_today = date.today()
d_ref = d_today - BDay(66)
lastDateData = dates[0]
avgArray = []
while (d_ref >= lastDateData):
avg_data = [x for x in stockData_sorted if (x[0] >= d_ref and x[0] <= d_ref + BDay(22))]
avg_dates = [d[0] for d in avg_data]
avg_graphData = [d[1] for d in avg_data]
workingAvg = sum(avg_graphData)/len(avg_graphData)
avgArray.append((d_today,workingAvg))
d_today = d_today - BDay(1)
d_ref = d_ref - BDay(1)
d_today=date.today()
d_ref=d_今日-B日(66)
lastDateData=日期[0]
avgArray=[]
而(d_ref>=lastDateData):
avg_data=[x代表stockData中的x,如果(x[0]>=d_ref和x[0]您已经有两个datetime.date
实例,则根据您的输出进行排序:
<type 'datetime.date'>
<type 'datetime.date'>
只是
应该行得通
补充:尽管有误导性的输出x[0]
似乎不是datetime.date
而是一个时间戳(在这种情况下我无法解释输出)。如果是这样的话
datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate
可能会更好。您有一个'pandas.tslib.Timestamp'
不是一个普通的datetime对象;它没有.date()
方法
avgArray2 = [x for x in avgArray
if datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate.date()]
print([type(x[0])for x in avgArray])
的结果是什么?
下面是输出结果——这就是为什么我使用“.date()”调用来转换为日期时间日期(或者我认为是这样)avgArray由什么组成?你能给出这个数组构建的代码吗?它是从PSQL数据库中提取的数据库。它提取的两个字段及其数据库编码是:日期(时间戳)和离散度(数字)。我在最初的帖子中添加了关于avgArray是如何构建的完整代码。这让我很困惑。当我像你建议的那样运行代码时,我得到了以下错误:avgArray2=[x for x in avgArray if x[0]>=oldestDate]File“tslib.pyx”,第694行,in pandas.tslib.\u Timestamp.\u richcmp\u(pandas/tslib.c:12256)TypeError:无法将类型“Timestamp”与编辑A时的类型“date”进行比较以提及此异常。感谢帮助,我没有意识到它没有日期()方法。虽然现在我遇到了此错误:TypeError:描述符“date”需要一个“datetime.datetime”对象,但收到了一个“int”,最终使其正常工作。这是一个我不久前就应该意识到的简单错误-只需将函数调用为:date(x[0]。year,x[0]。month,x[0]。day)。再次感谢您的帮助。
datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate
avgArray2 = [x for x in avgArray
if datetime.date(x[0].year, x[0].month, x[0].day) >= oldestDate.date()]