Python的改变从日/日期格式/ YY到DD /月/年的日期1970年以前

问题描述:

我有一个具有日期列像下面蟒大熊猫数据帧:Python的改变从日/日期格式/ YY到DD /月/年的日期1970年以前

'Birth Date' 
0  22/04/73 
1  22/03/53 
2  22/04/73 
3  14/08/77 
4  08/05/50 

欲这个对象数据类型转换为日期格式,是这样的:1953年4月6日...

我试图转换为datetime数据类型如下:

df['Birth Date']=pandas.to_datetime(df['Birth Date'],format='%d/%m/%y') 

但输出像:

0 1973-04-22 
1 2053-03-22 
2 1973-04-22 
3 1977-08-14 
4 2050-05-08 

我怎么得到1953年,1950年等,而不是2053年,2050年?

+0

的可能的复制[如何分析与2位数年份字符串的日期?(https://*.com/questions/16600548/how-to-解析字符串日期与2位数字年) – Psytho

+0

https://*.com/questions/40422517/convert-date-from-dd-mm-yy-to-dd-mm-yyyy-using-python – Psytho

+0

@ Alex.S当涉及到熊猫时,(几乎总是)日期时间操作有更好/不同的解决方案。 –

您需要通过掩码手动更改年份,例如,多为2017所有年份被100年减去:

df['Birth Date']= pd.to_datetime(df['Birth Date'],format='%d/%m/%y') 
df['Birth Date'] = df['Birth Date'].mask(df['Birth Date'].dt.year > 2017, 
             df['Birth Date'] - pd.offsets.DateOffset(years=100)) 
print (df) 
    Birth Date 
0 1973-04-22 
1 1953-03-22 
2 1973-04-22 
3 1977-08-14 
4 1950-05-08 
+0

谢谢,它的工作:) –

+0

为什么'dt.year> 2017' – pyd

+0

@pyd - 因为出生在'2000'后面的人会转换错误,像'1903'而不是'2003'。 – jezrael