我想问一个关于仅将日期时间转换为时间的问题。我的值“创建日期”在一列中包含日期和时间,我想创建两列:一列只有日期,一列有时间。我写了一个代码,但在时间列中,我得到了一个默认日期 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")
答案 0 :(得分:2)
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
答案 1 :(得分:1)
将 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)
答案 2 :(得分:1)
怎么样?
>>> 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
答案 3 :(得分:0)
你可以这样做:
from datetime import datetime
now = datetime.now() # current date and time
hour = now.strftime("%H")# current hour
但是根据您的需要进行自定义,您check the documentation