仅从日期时间列 pandas 中提取日期

Dan*_*ish 3 datetime pandas

我有如下所示的数据框

Date_Time             
2019-02-27 10:00:00
2019-08-07 20:23:00
2019-02-24 00:00:00
Run Code Online (Sandbox Code Playgroud)

从上面我想只在新列中提取日期,如下所示。

预期输出:

Date_Time               Date
2019-02-27 10:00:00     2019-02-27
2019-08-07 20:23:00     2019-08-07
2019-02-24 00:00:00     2019-02-24
Run Code Online (Sandbox Code Playgroud)

尝试了下面的代码

df['Date']  = pd.to_datetime(df['Date_Time'], format="%m/%d/%Y").dt.floor('D')
Run Code Online (Sandbox Code Playgroud)

但没有提供所需的输出

Val*_*_Bo 6

如果您将Date_Time列作为字符串,请从将其转换为日期时间类型开始:

df.Date_Time = pd.to_datetime(df.Date_Time)
Run Code Online (Sandbox Code Playgroud)

然后运行:

df['Date'] = df.Date_Time.dt.date
Run Code Online (Sandbox Code Playgroud)

其他解决方案几乎与您的解决方案类似,但格式适合源数据的实际格式(年月日):

pd.to_datetime(df['Date_Time'], format='%Y-%m-%d').dt.floor('D')
Run Code Online (Sandbox Code Playgroud)

甚至没有格式:

pd.to_datetime(df['Date_Time']).dt.floor('D')
Run Code Online (Sandbox Code Playgroud)

注意:虽然两种变体给出相同的打印输出,但实际结果不同,您可以检查运行例如df.iloc[0,2].

  • 在第一种情况下,结果是datetime.date(2019, 2, 27)(只是日期)。
  • 但在第二种情况下,结果是Timestamp('2019-02-27 00:00:00') (带有“归零”时间部分的时间戳)。