Панды to_datetime не игнорирует уже преобразованные даты
Таким образом, мой столбец отметок времени содержит смесь как эпох, так и миллисекунд (мс). Установка pd.to_datetime(unit='s', errors='ignore')
сначала дает это как голову, а это как хвост, как я и думал. Он игнорировал метку времени типа "ms".
Но когда я запускаю df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms', errors='ignore')
моя голова становится NaT, но мой хвост правильно конвертирует. Почему функция не игнорирует уже преобразованные метки времени?
Почему это? Есть ли способ конвертировать оба типа юнитов с помощью встроенного? Мое текущее решение выполняет итерацию по каждой строке, чтобы проверить, больше ли длина отметки времени, чем 10, если она сокращена до 10. После чего я использую to_datetime.
У меня большой набор данных для текущего решения, так как он занимает много времени.
РЕДАКТИРОВАТЬ
Столбец метки времени будет выглядеть примерно так
1541760294 1541746328 1541723516 1543826478000 1543804455000 1541741097
Это быстрый взлом, но вы можете просто использовать индекс, заданный проверкой типа, для преобразования индексов, которые вы не получили при первом проходе:
idx = [df['timestamp'].apply(lambda x: type(x)!=datetime.datetime)]
df['timestamp'][idx] = pd.to_datetime(df['timestamp'], unit='ms', errors='ignore')
Я не совсем уверен, каким будет тип данных, но я предполагаю, что это будет datetime.datetime...