如何解决 pandas.to_datetime 与 python 的内置日期时间冲突?
How to resolve conflicting of pandas.to_datetime with python's built-in datetime?
最初我有
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
相等性?
编辑:正如评论中所指出的,问题实际上是当我使用 [=36 时,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')
没有它,2 个日期之间的转换格式不同
>>> l = pd.to_datetime(['30/4/20', '1/5/20'])
>>> l[0] - l[1]
Timedelta('116 days 00:00:00')
最初我有
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
相等性?
编辑:正如评论中所指出的,问题实际上是当我使用 [=36 时,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')
没有它,2 个日期之间的转换格式不同
>>> l = pd.to_datetime(['30/4/20', '1/5/20'])
>>> l[0] - l[1]
Timedelta('116 days 00:00:00')