Как установить временную метку в питоне

такие данные у меня есть

0     "30-01-2018 18:46 pm"
1     "30-01-2018 01:25 am"
2     "2018-01-29 20:57 pm"
3     "29-01-2018 18:23 pm"
4     "01-29-2018 15:53 pm"

вот формат всех этих строк, и для каждой строки он разный

как убрать эти am и pm ??

Является ли это возможным?

заранее спасибо

какой у вас тип данных? нить?

ilja 21.06.2019 21:42

@ilja да .. это строка (я обновил вопрос)

jony 21.06.2019 21:43

будет чрезвычайно сложно (а иногда и невозможно) отличить format='%d-%m-%Y %H:%M %p' от format='%m-%d-%Y %H:%M %p', например: 02-03-1999 12:23 pm может быть либо 3 февраля, либо 2 марта. Вы вообще не можете сказать

David Culbreth 21.06.2019 21:58

@DavidCulbreth Я знаю, поэтому я разместил это здесь, потому что мы можем сделать это с помощью Excel (изменить форматирование и сделать его одинаковым для всех), я хочу знать, возможно ли это с пандами или нет?

jony 21.06.2019 21:59

откуда вы знаете, что делаете это правильно в excel? у вас есть что-то еще, чтобы сказать вам, какой формат вы используете? Я хочу сказать, что без дальнейшего контекста вы даже не знаете, правильно ли вы поступаете с самого начала.

David Culbreth 21.06.2019 22:00

@DavidCulbreth в excel мне просто нужно ввести %d-%m-%Y %H:%M %p и все конвертируется в этот формат, я уже это сделал

jony 21.06.2019 22:02

@jony и excel будут делать предположения о том, из какого формата вы конвертируете. Без такого же рода предположений, которые были бы произвольным предпочтением одного формата другому, это преобразование невозможно. Вы не знаете, что даты, которые дает вам Excel, верны, если только вы не проверяете вручную весь результат. Вы можете проверить данные, которые он сгенерировал, на наличие ошибок. Эта же операция возможна с пандами, но нет никаких дальнейших «обещаний» быть «более правильными».

David Culbreth 21.06.2019 22:04
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
7
114
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я бы использовал try/except, чтобы попробовать каждый из предложенных вами форматов, пока один из них не сработает. Затем преобразуйте его в объект datetime, используя strptime. Затем преобразуйте этот объект даты и времени в целевой формат '%d-%m-%Y %H:%M', используя strftime.

Ответ принят как подходящий

Поскольку у вас есть два формата, которые лексически взаимозаменяемы почти для половины дат (format='%d-%m-%Y %H:%M %p' и format='%m-%d-%Y %H:%M %p'), эта задача логически, математически и доказуемо невозможна. Вы не можете определить, какой формат используется между этими двумя для любой даты любого месяца до 13-го числа этого месяца. результирующий формат будет неоднозначным в отношении того, является ли день или месяц первым элементом в формате, и поэтому его невозможно транспонировать без некоторых грубых предположений об используемом формате. Эти предположения могут работать нормально, но равновероятно, что он будет неправильно анализировать все даты. Это также относится к подходу на основе Excel, который вы используете в настоящее время. Пожалуйста, проверьте каждый элемент данных, созданных с помощью этого метода, так как он, вероятно, содержит неправильно проанализированную информацию.

Если вы выясните, какой формат вы на самом деле используете, или другой способ определить подходящий формат, не стесняйтесь задавать еще один вопрос, и я уверен, что сообщество вам поможет.

Если это просто строки, вы можете удалить из них am и pm следующим образом:

# get your date somehow.
my_date = "01-29-2018 15:53 pm"
if my_date.endswith(" pm") or my_date.endswith(" am"):
    my_date = my_date[:-3]
print(my_date)

>>> 01-29-2018 15:53

привет, могу я удалить ("01-11-2018 12:26" "01-11-2018 10:05" "01-11-2018 10:11" "01-11-2018 20:38" "01-11-2018 10:59") утра и вечера из этих ?? если да, то как? я думаю это решит эту проблему

jony 21.06.2019 22:19

Большое спасибо, чувак

jony 21.06.2019 23:02

Другие вопросы по теме