2015-08-21 66 views
0

我有一個csv文件,日期格式顯示爲dd-mmm-yy,我想以格式yyyy-mm-dd讀取。解析日期選項的作品,但它不會轉換日期2000年前正確 例如:實際日期是01年8月1日。它顯示爲68年8月1日。熊貓日期parase和校正= true讀取日期爲20年8月1日。pandas以yy-mm-dd格式從csv讀取日期

是否有任何選項來讀取在該日期的正確格式大熊貓日期前2000

+0

我不知道大熊貓dateutil怎麼拉,但[這個問題]( https://github.com/dateutil/dateutil/issues/84)可能是一個開始的地方。 – Paul

+0

你使用什麼版本的熊貓?使用0.16.2'pd.to_datetime('01 -Aug-68')'給我'時間戳('1968-08-01 00:00:00')' – joris

+0

請發佈樣本原始輸入數據以避免任何含糊之處 – EdChum

回答

2
from dateutil.relativedelta import relativedelta 
import datetime 

讓我們假設你有一個這樣的CSV:

mydates 
18-Aug-68 
13-Jul-45 
12-Sep-00 
20-Jun-10 
15-Jul-60 

定義你的約會格式

d = lambda x: pd.datetime.strptime(x, '%d-%b-%y') 

將制約他們

dateparse = lambda x: d(x) if d(x) < datetime.datetime.now() else d(x) - relativedelta(years=100) 

閱讀您的CSV:

df = pd.read_csv("myfile.csv", parse_dates=['mydates'], date_parser=dateparse) 

這裏是你的結果:

print df 

    mydates 
0 1968-08-18 
1 1945-07-13 
2 2000-09-12 
3 2010-06-20 
4 1960-07-15