繁体   English   中英

仅将日期时间转换为 pandas 中的时间

[英]Converting datetime only to time in pandas

我想问一个关于仅将日期时间转换为时间的问题。 我的值“创建日期”在一列中包含日期和时间,我想创建两列:一列只有日期,一列有时间。我写了一个代码,但在时间列中我得到了默认日期 1900-01 -01 以及时间。

我现在想知道如何创建一个仅包含时间格式的列:小时:分钟:秒

我将不胜感激任何提示。

    Date Created      Date         Time
2016-02-20 09:26:45 2016-02-20  1900-01-01 09:26:45
2016-02-19 19:30:25 2016-02-19  1900-01-01 19:30:25
2016-02-19 18:13:39 2016-02-19  1900-01-01 18:13:39
2016-03-01 14:15:36 2016-03-01  1900-01-01 14:15:36
2016-03-04 14:47:57 2016-03-04  1900-01-01 14:47:57

我写了一个类似下面的代码来提取数据

Data.loc[:,'Date Created'] = pd.to_datetime(Data.loc[:,'Date Created'], format="%Y-%m-%d %H:%M:%S")
Data.loc[:,'Date'] = pd.to_datetime(Data.loc[:,'Date'], format="%Y-%m-%d")
Data.loc[:,'Time'] = pd.to_datetime(Data.loc[:,'Time'], format="%H:%M:%S")

pandas没有单独的日期和时间数据类型。 如果您只想让您的列显示日期或时间,您可以格式化为字符串(strftime)。 前任:

import pandas as pd

Data = pd.DataFrame({'Date Created': ["2016-02-20 09:26:45", "2016-02-19 19:30:25", "2016-02-19 18:13:39"]})

Data['Date Created'] = pd.to_datetime(Data['Date Created'])
Data['Date'] = Data['Date Created'].dt.strftime("%Y-%m-%d")
Data['Time'] = Data['Date Created'].dt.strftime("%H:%M:%S")

Data
         Date Created        Date      Time
0 2016-02-20 09:26:45  2016-02-20  09:26:45
1 2016-02-19 19:30:25  2016-02-19  19:30:25
2 2016-02-19 18:13:39  2016-02-19  18:13:39

Python 文档 / strftime

Date Created转换为pd.datetime ,您可以使用它来获取其他两个:

>>> Data.loc[:,'Date Created'] = pd.to_datetime(Data.loc[:,'Date Created'], format="%Y-%m-%d %H:%M:%S")
>>> Data['Date'] = Data['Date Created'].dt.date
>>> Data['Time'] = Data['Date Created'].dt.time
>>> Data
         Date Created        Date      Time
0 2016-02-20 09:26:45  2016-02-20  09:26:45
1 2016-02-19 19:30:25  2016-02-19  19:30:25
2 2016-02-19 18:13:39  2016-02-19  18:13:39
3 2016-03-01 14:15:36  2016-03-01  14:15:36
4 2016-03-04 14:47:57  2016-03-04  14:47:57

然后你得到:

>>> Data['Time'][0]
datetime.time(9, 26, 45)
>>> Data['Date'][0]
datetime.date(2016, 2, 20)

那个怎么样?

>>> df['TimeOnly']=df['Date Created'].dt.strftime('%H:%M:%S')

>>> df
         Date Created  TimeOnly
0 2016-02-20 09:26:45  09:26:45
1 2016-02-19 19:30:25  19:30:25
2 2016-02-19 18:13:39  18:13:39
3 2016-03-01 14:15:36  14:15:36
4 2016-03-04 14:47:57  14:47:57

你可以这样做:

from datetime import datetime

now = datetime.now() # current date and time

hour = now.strftime("%H")# current hour 

但是根据需要进行自定义,请查看文档

通过使用dt.strftime('%H:%M:%S')格式不再是datetime64[ns]并成为一个“对象” ,这让人无法使用 datetime 函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM