Так что, когда я использовал pd.to_datetime (), возникли некоторые ошибки, такие как несоответствие формата и не похожие на время данные.Как можно унифицировать формат этого столбца?
Используйте параметр errors='coerce'
, чтобы вернуть NaT
(не время) для не преобразованных значений.Также обратите внимание, что аргумент format
не требуется.Отказ от этого позволит Пандам попробовать несколько форматов, в противном случае он вернется к NaT
1 .Например:
df['datetime'] = pd.to_datetime(df['datetime'], errors='coerce')
Осторожно, смешанные типы могут интерпретироваться неправильно.Например, как Python узнает, будет ли 05/06/2018
5 июня или 6 мая?Будет применен порядок соглашений, и если вам нужен больший контроль, вам нужно будет применить индивидуальный заказ самостоятельно.
Могу ли я сохранить тип d datetime и изменить формат на '% m /% d/% Y '?
Нет, вы не можете.datetime
ряды хранятся внутри как целые числа.Любое удобочитаемое представление даты - это просто представление , а не базовое целое число.Чтобы получить доступ к вашему пользовательскому форматированию, вы можете использовать методы, доступные в Pandas.Вы даже можете сохранить такое текстовое представление в переменной pd.Series
:
formatted_dates = df['datetime'].dt.strftime('%m/%d/%Y')
dtype
из formatted_dates
будет object
, что указывает на то, что элементы вашей серии указывают на произвольный Pythonраз.В этом случае эти произвольные типы являются всеми строками.
Наконец, я настоятельно рекомендую вам , а не преобразовать серию datetime
в строки до самого последнего шага в вашем рабочем процессе.Это связано с тем, что, как только вы это сделаете, вы больше не сможете использовать эффективные векторизованные операции для такой серии.
1 Это приведет к снижению производительности и контрастированию сdatetime.strptime
, для которого требуется указать формат .Внутри Pandas использует библиотеку dateutil
, как указано в документах .