格式化白天和日期没有两位数的日期时间?

时间:2018-01-11 21:52:05

标签: python pandas datetime timestamp

我的数据框有一个特定的列,其日期时间采用以下格式输出的格式:

df['A']
1/23/2008 15:41
3/10/2010 14:42
10/14/2010 15:23
1/2/2008 11:39
4/3/2008 13:35
5/2/2008 9:29

我需要将df['A']转换为df['Date']df['Time']df['Timestamp']

我尝试使用

首先将df['A']转换为日期时间
df['Datetime'] = pd.to_datetime(df['A'],format='%m/%d/%y %H:%M')

我将在上面创建我的三个列,但%m/%d的格式代码不会获取单个数字的月份和日期。

有没有人知道快速解决这个问题?

2 个答案:

答案 0 :(得分:2)

您的格式存在错误。作为@MaxU commented,如果您没有传递 SELECT TOP 1000 CONVERT(char(10), [DateAndTime], 108) as Time , tagtable.tagname, digitaltagdescription.value, digitaltagdescription.[status], CASE digitaltagdescription.[STATUS] WHEN 'Off' THEN DATEDIFF(minute, Lag([DateAndTime], 1) OVER(ORDER BY [TagName], [DateAndTime]), [DateAndTime]) ELSE NULL END RunTime FROM [TS_SCADA_DIGITAL].[dbo].[floatvalues] INNER JOIN ts_scada_digital.dbo.tagtable ON tagtable.tagindex = floatvalues.tagindex INNER JOIN [dbo].[digitaltagdescription] ON digitaltagdescription.tag_name = tagtable.tagname AND digitaltagdescription.value = floatvalues.val WHERE floatvalues.dateandtime > Cast(Getdate() AS DATE) AND digitaltagdescription.tag_name LIKE 'Lift_STA\EASTS%' ORDER BY dateandtime DESC 参数,那么pandas会自动将您的列转换为format

datetime

或者,修复你的代码 -

df['Timestamp'] = pd.to_datetime(df['A'])

对于您的第一个查询,请使用df['Timestamp'] = pd.to_datetime(df['A'], format='%m/%d/%Y %H:%M') dt.normalize(感谢MaxU,以获取建议!) -

dt.floor

或者,

df['Date'] = df['Timestamp'].dt.normalize()

对于第二个查询,请使用df['Date'] = df['Timestamp'].dt.floor('D')

dt.time

df['Time'] = df['Timestamp'].dt.time

答案 1 :(得分:0)

我认为您可以使用%-m代替%m,如果这与strftime()函数的工作方式相同。