Чтение CSV-файла в Pandas с историческими датами

Я пытаюсь прочитать файл с датами в формате (UK) 13/01/1800, однако некоторые даты датируются 1667 годом, которые не могут быть представлены наносекундной меткой времени (см. Http: //pandas.pydata. org / pandas-docs / stable / gotchas.html # gotchas-timestamp-limits ). Я понимаю, что с этой страницы мне нужно создать свой собственный PeriodIndex для охвата диапазона, который мне нужен (см. Http://pandas.pydata.org/pandas-docs/stable/timeseries.html#timeseries-oob ), но я не могу понять как я преобразовываю строку в csv reader в дату в этом periodindex.

Пока у меня есть:

span = pd.period_range('1000-01-01', '2100-01-01', freq='D') df_earliest= pd.read_csv("objects.csv", index_col=0, names=['Object Id', 'Earliest Date'], parse_dates=[1], infer_datetime_format=True, dayfirst=True) 

Как применить пролет к считывателю / конвертеру даты, чтобы я мог создать столбец PeriodIndex / DateTimeIndex в фреймворке данных?

вы можете попытаться сделать это следующим образом:

 fn = r'D:\temp\.data\36987699.csv' def dt_parse(s): d,m,y = s.split('/') return pd.Period(year=int(y), month=int(m), day=int(d), freq='D') df = pd.read_csv(fn, parse_dates=[0], date_parser=dt_parse) 

Входной файл:

 Date,col1 13/01/1800,aaa 25/12/1001,bbb 01/03/1267,ccc 

Контрольная работа:

 In [16]: df Out[16]: Date col1 0 1800-01-13 aaa 1 1001-12-25 bbb 2 1267-03-01 ccc In [17]: df.dtypes Out[17]: Date object col1 object dtype: object In [18]: df['Date'].dt.year Out[18]: 0 1800 1 1001 2 1267 Name: Date, dtype: int64 

PS вы можете добавить try ... catch block в dt_parse() для try ... catch ValueError: exceptions – result of int()