python - 在 Python 中比较 String 和 Naive 格式的时间
问题描述
我需要比较python中两个日期之间的时间。一个以字符串形式给出,另一个以 datetime.datetime 格式给出。我尝试了一些想法,但错误总是Cannot compare tz-naive and tz-aware datetime-like objects
思路一:将字符串时间转换为pandas Timestamp。然后重新转换成字符串。然后转成isoformat。然后将新的 isoformat 与 datetime.datetime 对象进行比较
from datetime import datetime, timedelta
time_to_compare = datetime.utcnow()-timedelta(minutes=60)
df['Date'] = pd.to_datetime(df['Date'])
df['Date'] = df['Date'].apply(lambda x: str(x))
df['Date'] = df['Date'].apply(lambda x: datetime.fromisoformat(x))
df= df.loc[df['Date']>=time_to_compare]
思路二:把 datetime.datetime 对象改成 Timestamp
time_to_compare = pd.to_datetime(datetime.utcnow()-timedelta(minutes=60))
df['Date']=pd.to_datetime(df['Date'])
df= df.loc[df['Date']>=time_to_compare]
理想情况下,我想过滤数据框并说明 time_to_compare 是否小于 df['Date'] 将所述元素保留在数据框中。
用于测试:
d = {'Date':['2020-03-12T13:59:15.739Z','2020-02-28T22:22:06.827Z']}
df = pd.DataFrame(data=d)
解决方案
使用 Pandas 1.0.1,您可以utc=True
在创建时添加time_to_compare
:
time_to_compare = pd.to_datetime(datetime.utcnow()-timedelta(minutes=60), utc=True)
让它知道时区
推荐阅读
- office-js - Office-js Excel:获取新保存文件的文件名
- angular - 错误 RangeError:超过最大调用堆栈大小 [Angular]
- security - 用户无法访问托管在 IIS 上的网站,该网站配置为启用 Windows 身份验证
- javascript - reactjs react router 拾取url中的更改
- c++ - 在 XCode 中找不到“uWS/uWS.h”文件
- sql - sql中某些日期范围除以零错误
- javascript - Angular 5:JavaScript 自定义事件(Polyfill)
- c# - winforms:使用 parallel.foreach 更新进度
- javascript - 可以将更改的数组传递给无状态组件吗?
- javascript - 带有指向锚点的链接的 href # 引发 jquery 错误