如何将年,月和日列合并为单个datetime列?
我有以下数据框df
:
id lat lon year month day
0 381 53.30660 -0.54649 2004 1 2
1 381 53.30660 -0.54649 2004 1 3
2 381 53.30660 -0.54649 2004 1 4
我想创建一个新列df['Date']
,其中year
,month
和day
列按照格式结合yyyy-m-d
。
我做了:
`df['Date']=pd.to_datetime(df['year']*10000000000
+df['month']*100000000
+df['day']*1000000,
format='%Y-%m-%d%')`
结果不是我所期望的,因为它从1970年而不是2004年开始,并且还包含小时戳,我没有指定:
id lat lon year month day Date
0 381 53.30660 -0.54649 2004 1 2 1970-01-01 05:34:00.102
1 381 53.30660 -0.54649 2004 1 3 1970-01-01 05:34:00.103
2 381 53.30660 -0.54649 2004 1 4 1970-01-01 05:34:00.104
由于日期应采用2004-1-2
格式,我在做什么错?
-
有一个更简单的方法:
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
来自docs:
从DataFrame的多个列中组合一个日期时间。这些密钥可以像常见缩写[
year
,month
,day
,minute
,
second
,ms
,us
,ns
])或相同的复数