There is an easier way:
In [250]: df['Date']=pd.to_datetime(df[['year','month','day']])
In [251]: df
Out[251]:
id lat lon year month day Date
0 381 53.3066 -0.54649 2004 1 2 2004-01-02
1 381 53.3066 -0.54649 2004 1 3 2004-01-03
2 381 53.3066 -0.54649 2004 1 4 2004-01-04
from docs:
Assembling a datetime from multiple columns of a DataFrame. The keys
can be common abbreviations like [year
,month
,day
,minute
,
second
,ms
,us
,ns
]) or plurals of the same