最初我有
print(transactions.Date.loc[0])
>>>30/04/18
我首先完成
transactions['Date'] = pd.to_datetime(transactions['Date'])
现在
print(transactions.Date.loc[0])
>>>2018-04-30 00:00:00
此后,我检查是否等于等式
transactions.Date.loc[0] + datetime.timedelta(days=1) == transactions.Date.loc[1]
>>>False
所以我检查
print(transactions.Date.loc[0] + datetime.timedelta(days=1))
>>>2018-05-01 00:00:00
print(transactions.Date.loc[1])
>>>2018-01-05 00:00:00
原来两个都引用相同的时间,但是格式不同。如何修改我的代码以获得相等的True
?
EDIT:如注释中所指出,实际上是当我使用pd.to_datetime时,问题从5月1日转换为1月5日。因此,新问题是如何解决此问题?
代码运行正常,您确定transactions.Date.loc[0]
和transactions.Date.loc[1]
之间的差额恰好是1天吗?
>>> l = pd.to_datetime(['2000/23/11', '2000/24/11'], dayfirst=True)
>>> l[0] + datetime.timedelta(days=1) == l[1]
True
>>> print(l[0], l[0] + datetime.timedelta(days=1), l[1], sep='\t')
2000-11-23 00:00:00 2000-11-24 00:00:00 2000-11-24 00:00:00
编辑:使用您的数据,我发现了错误:
dayfirst=True
效果很好
>>> l = pd.to_datetime(['30/4/20', '1/5/20'], dayfirst=True)
>>> l[0] - l[1]
Timedelta('-1 days +00:00:00')
没有它,两个日期之间的转换格式是不同的
>>> l = pd.to_datetime(['30/4/20', '1/5/20'])
>>> l[0] - l[1]
Timedelta('116 days 00:00:00')