使用PyTZ时出现Datetime无效比较错误,请求排查原因
时区不匹配导致的Datetime过滤错误问题
我在对DataFrame的datetime对象进行过滤时,反复遇到如下错误:TypeError: Invalid comparison between dtype=datetime64[ns, pytz.FixedOffset(120)] and DatetimeArray
此前我也曾进行过同类过滤操作,但这是首次出现该问题。
转换datetime对象及后续操作代码
# 创建用于合并的日期列并设置日期格式 df_fpu["datetime"] = pd.to_datetime(df_fpu["datetime"]) df_fpu["date"] = df_fpu["datetime"].dt.date df_fpu["date"] = pd.to_datetime(df_fpu["date"]) # 设置为正确时区 df_fpu.datetime.astype('datetime64[ns]') df_fpu.date.astype('datetime64[ns]') # 确保df_events的时间格式正确(已处于正确时区) df_events["start_datetime"] = pd.to_datetime(df_events["start_datetime"]) df_events["end_datetime"] = pd.to_datetime(df_events["end_datetime"]) df_events["date"] = pd.to_datetime(df_events["date"]) # 合并df_events和df_fpu df_merged = pd.merge(df_events, df_fpu, on=["stand", "date"], how="inner") # 根据航班起止时间过滤数据框,移除错误记录 df_fpu = df_merged[(df_merged["datetime"] >= df_merged["start_datetime"]) & (df_merged["datetime"] <= df_merged["end_datetime"])]
样本数据(10行)
| start_datetime | end_datetime | stand | date | datetime | num_signals |
|---|---|---|---|---|---|
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:33:00.000+0000 | 5 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:34:00.000+0000 | 8 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:35:00.000+0000 | 10 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:36:00.000+0000 | 17 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:37:00.000+0000 | 19 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:38:00.000+0000 | 30 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:39:00.000+0000 | 23 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:40:00.000+0000 | 23 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:41:00.000+0000 | 24 |
| 2022-04-28T20:53:14.000+0000 | 2022-04-28T22:27:02.000+0000 | G06 | 2022-04-28T00:00:00.000+0000 | 2022-04-28T05:42:00.000+0000 | 24 |
请问有人知道该错误出现的原因吗?
内容的提问来源于stack exchange,提问作者Hans.nl
相关产品推荐
相关产品推荐

