Панды to_datetime не игнорирует уже преобразованные даты

-5

Таким образом, мой столбец отметок времени содержит смесь как эпох, так и миллисекунд (мс). Установка 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

спросил(а) 2021-01-19T14:45:57+03:00 6 месяцев, 1 неделя назад
1
Решение
100

Это быстрый взлом, но вы можете просто использовать индекс, заданный проверкой типа, для преобразования индексов, которые вы не получили при первом проходе:

idx = [df['timestamp'].apply(lambda x: type(x)!=datetime.datetime)]

df['timestamp'][idx] = pd.to_datetime(df['timestamp'], unit='ms', errors='ignore')

Я не совсем уверен, каким будет тип данных, но я предполагаю, что это будет datetime.datetime...

ответил(а) 2021-01-19T14:45:57+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема