Я написал код, который читает несколько файлов, однако в некоторых моих файлах дата и время меняются на день и месяц, когда день меньше 13, и любой день, который начинается с 13 или выше, т.е. 13/06/11, остается верным ( ДД / ММ / ГГ).
Я пытался это исправить, но это не сработало.
Мой фрейм данных выглядит так:
Фактическая дата - с 12 июня 2015 по 13 июня 2015
когда я читаю свой столбец даты и времени как строку, даты остаются правильными дд / мм / гггг
tmp p1 p2
11/06/2015 00:56:55.060 0 1
11/06/2015 04:16:38.060 0 1
12/06/2015 16:13:30.060 0 1
12/06/2015 21:24:03.060 0 1
13/06/2015 02:31:44.060 0 1
13/06/2015 02:37:49.060 0 1
но когда я изменяю тип моего столбца на столбец datetime, он меняет мой день и месяц на каждый день, который меньше 13.
выход:
print(df)
tmp p1 p2
06/11/2015 00:56:55 0 1
06/11/2015 04:16:38 0 1
06/12/2015 16:13:30 0 1
06/12/2015 21:24:03 0 1
13/06/2015 02:31:44 0 1
13/06/2015 02:37:49 0 1
Вот мой код:
Я перебираю файлы:
df = pd.read_csv(PATH+file, header = None,error_bad_lines=False , sep = '\t')
затем, когда мой код заканчивает чтение всех моих файлов, я объединяю их, проблема в том, что мой столбец datetime должен быть в типе datetime, поэтому, когда я меняю его тип на pd_datetime (), он меняет день и месяц, когда день менее чем 13.
После преобразования моего столбца datetime даты будут правильными (тип строки)
print(tmp) # as a result I get 11.06.2015 12:56:05 (11june2015)
Но когда я изменяю тип столбца, я получаю это:
tmp = pd.to_datetime(tmp, unit = "ns")
tmp = temps_absolu.apply(lambda x: x.replace(microsecond=0))
print(tmp) # I get 06-11-2016 12:56:05 (06november2015 its not the right date)
Вопрос в том, какую команду я должен использовать или изменить, чтобы остановить смену дня и месяца, когда день меньше 13?
UPDATE
Эта команда меняет все дни и месяцы моей колонки
tmp = pd.to_datetime(tmp, unit='s').dt.strftime('%#m/%#d/%Y %H:%M:%S')
Итак, чтобы поменять местами только неправильные даты, я написал условие:
for t in tmp:
if (t.day < 13):
t = datetime(year=t.year, month=t.day, day=t.month, hour=t.hour, minute=t.minute, second = t.second)
Но это тоже не работает