熊猫的日期时间转换

时间:2018-10-11 16:55:22

标签: pandas datetime

我有以下数据框;

Date = ['01-Jan','01-Jan','01-Jan','01-Jan']                                                    
Heure = ['00:00','01:00','02:00','03:00']
value =[1,2,3,4]
df = pd.DataFrame({'value':value,'Date':Date,'Hour':Heure})  
print(df)

     Date   Hour  value
0  01-Jan  00:00      1
1  01-Jan  01:00      2
2  01-Jan  02:00      3
3  01-Jan  03:00      4

我正在尝试创建一个日期时间索引,因为我正在使用的文件适用于2015年。我尝试了很多事情,但可以使其正常工作!我试图只转换日期和月份,但即使这样也不起作用:

df.index  = pd.to_datetime(df['Date'],format='%d-%m')

我希望得到以下结果:

                      Date   Hour     value
2015-01-01 00:00:00  01-Jan  00:00      1
2015-01-01 01:00:00  01-Jan  01:00      2
2015-01-01 02:00:00  01-Jan  02:00      3
2015-01-01 03:00:00  01-Jan  03:00      4

有人知道怎么做吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您需要以某种方式显式添加2015,并同时包含Hour列。我会做这样的事情:

df.index = pd.to_datetime(df.Date + '-2015 ' + df.Hour, format='%d-%b-%Y %H:%M')

>>> df
                       Date   Hour  value
2015-01-01 00:00:00  01-Jan  00:00      1
2015-01-01 01:00:00  01-Jan  01:00      2
2015-01-01 02:00:00  01-Jan  02:00      3
2015-01-01 03:00:00  01-Jan  03:00      4

答案 1 :(得分:0)

您可以使用replace

替换默认的1900。
s=pd.to_datetime(df['Date']+df['Hour'],format='%d-%b%H:%M').apply(lambda x : x.replace(year=2015))
s
Out[131]: 
0   2015-01-01 00:00:00
1   2015-01-01 01:00:00
2   2015-01-01 02:00:00
3   2015-01-01 03:00:00
dtype: datetime64[ns]

df.index=s