代码之家  ›  专栏  ›  技术社区  ›  Chandu

当pandas列类似于“jan-18”时,如何将其转换为date?

  •  0
  • Chandu  · 技术社区  · 6 年前

    当给出的值如“2月15日”需要为“01-02-2015”时,将列值转换为日期“dd-mm-yyy”的有效方法是什么?如果是“Dec-46”,则必须返回“01-12-1946”。

    1 回复  |  直到 6 年前
        1
  •  0
  •   EdChum Yuriy    6 年前

    您可以传递格式 '%b-%y' to_datetime :

    In[42]:
    df = pd.DataFrame({'date':["Feb-15","Dec-46"]})
    df['new_date'] = pd.to_datetime(df['date'], format='%b-%y')
    df
    
    Out[42]: 
         date   new_date
    0  Feb-15 2015-02-01
    1  Dec-46 2046-12-01
    

    注意新的 dtype datetime64 ,如果坚持,则无法控制显示输出。 DD-MM-YYYY 然后必须使用 dt.strftime :

    In[43]:
    df['str_date'] = df['new_date'].dt.strftime('%d-%m-%Y')
    df
    
    Out[43]: 
         date   new_date    str_date
    0  Feb-15 2015-02-01  01-02-2015
    1  Dec-46 2046-12-01  01-12-2046
    

    但是,如果需要执行算术运算或筛选,那么字符串就没有那么有用了

    编辑

    你不能存储早于1970年的日期,所以 '01-01-1946' 不是可用DelayTimes表示的有效日期时间 DATETME64