Упрощенная версия кода:
df.loc[df.loc['A'].notnull(), 'B'] = df.loc[df.loc['A'].notnull(), 'A'].map(
lambda x: dt.datetime.strptime(x, '%m/%d/%Y'))
проблема :
Этот код заполнен столбец "B" с 19-значными целыми числами (я полагаю, наносекундыUnix time) вместо ожидаемого datetime или pandas Timestamp.
Фрейм данных считывался из csv, созданного при экспорте MSSQL Server.Формат даты в файле не имеет дополняемых нулей.Это не должно быть проблемой, но когда файл был переформатирован, столбец затем заполнился метками времени, как и ожидалось .
Мы нашли довольно простое решение, но я не могу найти какой-либодокументация, которая объясняет, почему strptime возвращает целое число, и я не могу воспроизвести это поведение, когда я запускаю его, вводя значения в консоли (или Jupyter).
Q1: что здесь происходит?
Q2: Может ли форматирование строк из MSSQL каким-то образом вызвать такое поведение?
Q3: Стоит ли просто посчитать наши благословения и перестать спрашивать, почему?
Я просто отмечу, что это было странное обстоятельство ирешение было найдено путем настройки других частей кода, я просто хотел бы понять, что происходит.
(python 2.7, pandas 0.18)