首页 > 解决方案 > 当列类似于“Jan-18”时,如何将熊猫列转换为日期?

问题描述

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

标签: pythonpandasdatetime

解决方案


您可以将格式传递'%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'不是可以表示为的有效日期时间datetime64


推荐阅读