Панды, конвертируйте формат даты / времени мм / дд / гггг в дд / мм / гггг - PullRequest
0 голосов
/ 18 октября 2018

Формат csv по умолчанию - дд / мм / гггг.Когда я конвертирую его в datetime на df['Date']=pd.to_datetime(df['Date']), он меняет формат на мм // дд / гггг.

Затем я использовал df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%d/%m/%Y') для преобразования в дд / мм / гггг, но они в формате строки (объекта).Однако мне нужно изменить их на datetime формат.Когда я снова использую это (df['Date']=pd.to_datetime(df['Date'])), он возвращается к предыдущему формату.Нужна ваша помощь

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Когда я снова использую это: df['Date'] = pd.to_datetime(df['Date']), он возвращается к предыдущему формату.

Нет , вы не можете одновременно иметь строковый формат вашеговыберите и сохраните свою серию типа datetime.Как отмечено здесь :

datetime ряды хранятся внутри как целые числа.Любое удобочитаемое представление даты - это просто представление , а не базовое целое число.Чтобы получить доступ к вашему пользовательскому форматированию, вы можете использовать методы, доступные в Pandas.Вы даже можете сохранить такое текстовое представление в переменной pd.Series:

formatted_dates = df['datetime'].dt.strftime('%m/%d/%Y')

* dtype из formatted_dates будет object, что означает, что элементы вашей серии указывают на произвольный Pythonраз.В этом случае эти произвольные типы являются всеми строками.

Наконец, я настоятельно рекомендую вам , а не преобразовать серию datetime в строки до самого последнего шага в вашем рабочем процессе.Это связано с тем, что, как только вы это сделаете, вы больше не сможете использовать эффективные векторизованные операции для такой серии.

0 голосов
/ 18 октября 2018

Вы можете использовать parse_dates и dayfirst аргументы pd.read_csv, см .: документы для read_csv ()

df = pd.read_csv('myfile.csv', parse_dates=['Date'], dayfirst=True)

Это будет читать Dateстолбец в качестве значений даты и времени, правильно принимая первую часть ввода даты в качестве дня.Обратите внимание, что в целом вы хотите, чтобы ваши даты были сохранены как объекты даты и времени.

Затем, если вам нужно вывести даты в виде строки, вы можете вызвать dt.strftime():

df['Date'].dt.strftime('%d/%m/%Y')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...