Pyhthon: pd.DateOffset вызывает дублирование индекса - PullRequest
1 голос
/ 27 мая 2019

Я хочу изменить метку времени моего временного ряда dataframe. Существующая дата-время первой строки 01/01/2001 04:30:00. Я хочу изменить его на 05/12/2011 19:30:00, а остальные (до пяти лет 5-минутной записи) должны последовать.

Я использовал следующее:
df['DateTime'] = df['DateTime'] - pd.DateOffset(years=-10, months=-11, days=0, hours=9, minutes=0)

Работает, но также вводит тысячи дубликатов даты и времени.
Я пока не знаю, в чем причина.

Интересно, как правильно изменить дату и время, как я хотел выше?

Это данные.

Добавить 1:
Я проверял исходный файл на наличие дубликатов в столбце DateTime:

duplicaterows = df[df.duplicated(['DateTime'])]
print("Duplicate Rows:\n", duplicaterows)

# Result:    

Duplicate Rows:
                   DateTime   data
176252 2002-09-08 10:45:00  22.23
393863 2004-10-28 05:55:00  26.21

Показаны две строки, но я не считаю их дубликатами. Не знаю почему?

Добавить 2:
Для вас, кто все еще заинтересован в этом вопросе. Ошибки в конвертации происходят довольно регулярно. А именно, изменения в дельта-месяце происходят каждый раз, когда исходная временная метка переносится с 28 февраля 23:55 на следующий день, который длится один месяц. Изменения в дельта-дни и часы происходили чаще. Никаких изменений в дельте лет не наблюдается.

original               new
28/02/2001 23:55:00    28/01/2012 14:55:00
01/03/2001 00:00:00    31/01/2012 15:00:00

Правильная новая временная метка во втором ряду должна быть 28/01/2012 15:00:00 вместо 31/01/2012 15:00:00

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...