2017-10-15 742 views
1

我有一个名为'train'的数据框,其列ID以非常不寻常的方式表示'date'。对于例如ID中的某些条目:使用Python将一组数字转换为日期格式

For example, the value of ID 2013043002 represents the date 30/04/2013 
02:00:00 

前4位数字代表年份,后2位数字代表月份和日期。最后两位数字代表时间。

所以我想转换成适当的日期时间格式来执行时间序列分析。

+2

那么你有什么尝试?您只需提供格式字符串,与其他日期时间相同。 – roganjosh

+0

非常感谢@jezrael。完成! :) –

+0

不客气!你能接受解决方案吗?见上面的评论。谢谢。 – jezrael

回答

3

使用to_datetime与参数format - 检查http://strftime.org/

df = pd.DataFrame({'ID':[2013043002,2013043002]}) 

df['ID'] = pd.to_datetime(df['ID'], format='%Y%m%d%H') 
print(df) 
        ID 
0 2013-04-30 02:00:00 
1 2013-04-30 02:00:00 

print(df['ID'].dtype) 
datetime64[ns] 
2

使用​​进行日期时间操作。

datetime.strptime(d,"%Y%m%d%H").strftime("%d/%m/%Y %H:%M:%S") 
0

首先,如果你是要去总是相同的输入风格的标识,你可以用绳子或数字格式化打...

Id = 2013043002 
Year = Id[0:3] 
Month = Id[4:5] 
Day = Id[6:7] 
Time= Id[-2:-1] 

DateFormat = "{}-{}-{}".format(Day,Month,Year) 
TimeFormar = "%d:00:00"%Time 
Print (DateFormat) 
Output: 
04:30:2013 

然后,您可以将它包装到一个函数中,并通过循环传递每个Ids并管理您的数据。

当然,如果您不知道以前的ID包含格式,您应该使用其他时间模块选项,并管理字符串格式化以按照您需要的顺序显示。

0

通过使用模块的日期时间,你可以做到这一点很容易与功能strptime:

my_date = datetime.datetime.strptime(ID, "%Y%m%d%H") 

“%Y%M%d%H” 是你日期的格式:%Y是年,%m是月份(0填充),%d是日期(0填充),%H是小时(24H,填充0)。有关更多信息,请参阅http://strftime.org/

相关问题