【问题标题】:Python: Match same date format in two date time columnsPython:在两个日期时间列中匹配相同的日期格式
【发布时间】:2021-09-13 21:03:12
【问题描述】:

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

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"])

返回:

   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。在原始数据中,这些是不同数据集的一部分,这就是它们具有不同格式的原因。

【问题讨论】:

标签: python pandas dataframe datetime timezone


【解决方案1】:

您可以做以下两件事之一:

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

【讨论】:

  • 如果我还想从两者中删除 %S.%f 怎么办?只是删除它们不起作用...
  • @Joehat - df["date1"] = pd.to_datetime(df["date1"].str.replace(" UTC","").str[:-7])df["date2"] = pd.to_datetime(df["date2"].str[:-7])
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
  • 2013-07-17
  • 2019-03-01
相关资源
最近更新 更多