2017-12-18 17 views
3

前にPythonが日付のdd/mm/yyyyのために、DD/MM/YYから日付形式を変更します。私は以下のような日付列を持つPythonのパンダデータフレーム持っ1970

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

を私がしたいです私は以下のようにdatetimeデータ型に変換しようとした

... 1953年4月6日:日付フォーマット、このような何かにこのオブジェクトのデータ型を変換

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 

2053年、2050年の代わりに1953年、1950年などを年として取得するにはどうすればよいですか?

+0

可能な複製(https://stackoverflow.com/questions/16600548/how-to- [2桁の年で、文字列の日付を解析する方法を?]解析文字列の日付(2桁の年) – Psytho

+0

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

+0

@ Alex.S pandasに関しては、datetime操作のための(ほとんど常に)より良い/異なる解決策があります。 –

答えて

4

マスクで年を手動で変更する必要があります。すべての年より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年以降に生まれた人が '2003年ではなく '1903年のように間違って変換されるためです。 – jezrael

関連する問題