Python: 在两个日期时间列中匹配相同的日期格式

Python: Match same date format in two date time columns

我有以下数据框,其中有两个日期,其中一个包含时区。

df = pd.DataFrame(np.array([[10, "2021-06-13 12:08:52.311 UTC", "2021-03-29 12:44:33.468"], 
                            [36, "2019-12-07 12:18:02.311 UTC", "2011-10-15 10:14:32.118"]
                           ]),
                   columns=['col1', 'date1', 'date2'])
df

以下是我如何将它们从字符串转换为日期时间:

df["date1"]= pd.to_datetime(df["date1"])
df["date2"]= pd.to_datetime(df["date2"])

哪个returns:

   col1  date1                              date2
0   10  2021-06-13 12:08:52.311000+00:00    2021-03-29 12:44:33.468
1   36  2019-12-07 12:18:02.311000+00:00    2011-10-15 10:14:32.118

有时,我需要比较这两个日期以查找相同的值。为此,我需要将它们以相同的格式和相同的位数写入。这说, 如何从 date1 中删除时区,使其与 date2 中的相同格式匹配?

utc=None 作为 pd.to_datetime 中的默认值,所以这不起作用...

我假设这两个日期都是 UTC。在原始数据中,这些是不同数据集的一部分,这就是它们具有不同格式的原因。

您可以执行以下两项操作之一:

df["date1"]= pd.to_datetime(df["date1"], format="%Y-%m-%d %H:%M:%S.%f UTC")
df["date2"]= pd.to_datetime(df["date2"], format="%Y-%m-%d %H:%M:%S.%f")
>>> df
  col1                   date1                   date2
0   10 2021-06-13 12:08:52.311 2021-03-29 12:44:33.468
1   36 2019-12-07 12:18:02.311 2011-10-15 10:14:32.118

或者:

df["date1"]= pd.to_datetime(df["date1"].str.replace(" UTC", ""))
df["date2"]= pd.to_datetime(df["date2"])
>>> df
 col1                   date1                   date2
0   10 2021-06-13 12:08:52.311 2021-03-29 12:44:33.468
1   36 2019-12-07 12:18:02.311 2011-10-15 10:14:32.118