Заменить год в столбце pandas.datetime - PullRequest
0 голосов
/ 04 июня 2018

У меня есть фрейм данных со столбцом даты, преобразованным с помощью pd.to_datetime ().Когда я проверил данные, я нашел несколько таких дат с указанием года 2216, который должен был быть 2016. Не могли бы вы помочь мне изменить год для этих дат с 2216 до 2016

     Date
0   2216-12-21
1   2216-12-23
2   2216-01-31
3   2016-12-23
4   2216-12-27
5   2216-12-25
6   2016-12-23

Я пытался использоватьstr.replace

 df['Date'] = df['Date'].str.replace("2216","2016")

но получил следующую ошибку

 Can only use .str accessor with string values, which use np.object_ dtype in pandas

Заранее спасибо

1 Ответ

0 голосов
/ 04 июня 2018

Использование:

df['Date'] = df['Date'].mask(df['Date'].dt.year == 2216, 
                             df['Date'] + pd.offsets.DateOffset(year=2016))
print (df)
        Date
0 2016-12-21
1 2016-12-23
2 2016-01-31
3 2016-12-23
4 2016-12-27
5 2016-12-25
6 2016-12-23

Для лучшей производительности:

df['Date'] = df['Date'].mask(df['Date'].dt.year == 2216, df['Date'] - 
                                                         pd.to_timedelta(200, unit='y') + 
                                                         pd.to_timedelta(12, unit='h'))
print (df)
        Date
0 2016-12-21
1 2016-12-23
2 2016-01-31
3 2016-12-23
4 2016-12-27
5 2016-12-25
6 2016-12-23
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...