当给定的值(例如“ Feb-15”)必须为“ 01-02-2015”时,将列值转换为日期“ DD-MM-YYYY”的有效方法是什么。如果它是“ Dec-46”,则必须返回“ 01-12-1946”。
答案 0 :(得分:0)
您可以将格式'%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
表示的有效日期时间