2017-10-18 64 views
0

这里是我的数据:如何使用pandas.Series.dt.strftime可以做小时映射吗?

device_create_at    
136 2014-08-27 17:29:23    
245 2015-09-06 15:46:00    
257 2014-09-29 22:26:34    
258 2014-11-05 13:02:18  

这里是我的预期输出

device_create_at    device_create_hour 
136 2014-08-27 17:29:23   2014-08-27 17 
245 2015-09-06 15:46:00   2015-09-06 15 
257 2014-09-29 22:26:34   2014-09-29 22 
258 2014-11-05 13:02:18   2014-11-05 13 

据我所知,pandas.Series.dt.strftime能做到每周映射,代码是这样的

sheet2['device_create_week'] = sheet2['device_create_at'].dt.strftime('%Y-%V') 

他们使用%V为一周而不是%W,我试图使这个小时

sheet2['device_create_hour'] = sheet2['device_create_at'].dt.strftime('%Y-%M-%D-%H') 

也就是说doeesn't工作

+0

请多关注一下你想要的东西。从您当前的数据和预期结果开始。这对atm没有帮助。 –

+0

感谢提醒我,我已经更新了问题 –

回答

1
s = df.device_create_at.dt.strftime('%Y-%m-%d %H') 
print(s) 
136 2014-08-27 17 
245 2015-09-06 15 
257 2014-09-29 22 
258 2014-11-05 13 
Name: device_create_at, dtype: object 

注意,格式为%Y-%m-%d %Hm和小d

+0

OKM我的建议是正确的。关于我的数据的问题,错误消息 '只能使用带datetimelike值的.dt访问器' –

+0

@NabihIbrahimBawazir此方法的基本假设是您的列是日期时间列。如果不是,你需要使用'pd.to_datetime'并将其转换为:'df.device_create_at = pd.to_datetime(df.device_create_at)' –

+0

是的,我已经阅读过这里https://stackoverflow.com/questions/33365055/attributeerror-can-only-use-dt-accessor-with-datetimelike-values,并尝试'pd.to_datetime(df ['device_create_at'],coerce = True)'并且没有参数调用强制 –

相关问题