如何将年,月和日列合并为单个datetime列?

发布于 2021-01-29 18:06:18

我有以下数据框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'],其中yearmonthday列按照格式结合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格式,我在做什么错?

关注者
0
被浏览
143
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    有一个更简单的方法:

    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的多个列中组合一个日期时间。这些密钥可以像常见缩写[ yearmonthdayminute
    secondmsusns])或相同的复数



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看