【发布时间】:2022-02-20 03:12:56
【问题描述】:
在比较两个日期时我会发疯——一个是 pd_todatetime 对象,另一个是 python datetime 对象。两者都有相同的日期和时区,但仍然比较显示不平等。下面是两个对象:
Timestamp('2022-02-17 09:15:00+0530', tz='Asia/Kolkata')
datetime.datetime(2022, 2, 17, 9, 15, tzinfo=<DstTzInfo 'Asia/Kolkata' LMT+5:53:00 STD>)
第一个是pd.to_datetime索引,后者是python datetime对象。
以下是原始数据:
from pytz import timezone
IST = timezone('Asia/Kolkata')
data = {'date': datetime.datetime(2022, 2, 17, 9, 15, tzinfo=tzoffset(None, 19800)), 'open': 150, 'high': 203.75, 'low': 150, 'close': 191.45, 'volume': 185050, 'oi': 1735100}
df = pd.DataFrame(dat)
if df.date.dt.tz == None:
df['date'] = df.date.dt.tz_localize(IST)
else:
df['date'] = df.date.dt.tz_convert(IST)
df.set_index("date", inplace=True)
start = datetime(2022,2,17,9,15,0, tzinfo=IST)
if df.index.min() == start:
do_something()
这是 if 语句被评估为 False 的地方
【问题讨论】:
-
你能提供最少的代码来创建和比较这两个对象吗?这可能会有所帮助。
-
显示您的原始 CSV 输入文本和预期的原始 CSV 输出文本。可能还有其他方法可以做到这一点,我们可以从原始格式中确定
-
Bill - 请查看已编辑的代码 sn-p
-
如果你使用来自 pytz 的时区对象,你必须本地化;例如
IST.localize(datetime.datetime(2022, 2, 17, 9, 15))。否则,将使用本地平均时间 (LMT) - 请注意示例中 5:53 小时的 UTC 偏移量!
标签: python pandas datetime timestamp