Я хочу изменить метку времени моего временного ряда 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