Python преобразовывает формат даты в дату и время точно, включая даты до 1970 - PullRequest
1 голос
/ 18 апреля 2019

Рассмотрим код Python Panda как

datetest = pd.DataFrame({'year':['02','08',23,32,43,68,70,72,85,94]})
newdate = pd.to_datetime(datetest['year'], format='%y')
print(newdate)

Вывод:

0   2002-01-01
1   2008-01-01
2   2023-01-01
3   2032-01-01
4   2043-01-01
5   2068-01-01
6   1970-01-01
7   1972-01-01
8   1985-01-01
9   1994-01-01
Name: year, dtype: datetime64[ns]

Так как я могу преобразовать 2023, 2032, 2043, 2068 в 1923, 1932, 1943, 1968 соответственно, сохраняяформат даты и времени нетронут?

1 Ответ

3 голосов
/ 18 апреля 2019

Вы можете использовать логическое индексирование и pandas.DateOffset, чтобы скорректировать любые даты в будущем на 100 лет.

Если это правило слишком строгое, вы можете установить собственный порог того, каким может быть приемлемый год:

year = pd.datetime.today().year

# If setting your own threshold year eg.
# year = 2030

newdate.loc[newdate.dt.year.gt(year)] -= pd.DateOffset(years=100)

[вне]

0   2002-01-01
1   2008-01-01
2   1923-01-01
3   1932-01-01
4   1943-01-01
5   1968-01-01
6   1970-01-01
7   1972-01-01
8   1985-01-01
9   1994-01-01
Name: year, dtype: datetime64[ns]
...