У меня есть фреймворк pandas со следующими столбцами;
Date Time
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00
Как мне объединить данные ["Дата"] и данные ["Время"], чтобы получить следующее? Есть ли способ сделать это с помощью pd.to_datetime
?
Date
01-06-2013 23:00:00
02-06-2013 01:00:00
02-06-2013 21:00:00
02-06-2013 22:00:00
02-06-2013 23:00:00
03-06-2013 01:00:00
03-06-2013 21:00:00
03-06-2013 22:00:00
03-06-2013 23:00:00
04-06-2013 01:00:00
Ответы:
Стоит отметить, что вы могли прочитать это напрямую, например, если вы использовали
read_csv
usingparse_dates=[['Date', 'Time']]
.Предполагая, что это просто строки, вы можете просто сложить их вместе (с пробелом), что позволит вам применить
to_datetime
:Примечание: как ни странно (для меня), это нормально работает с преобразованием NaN в NaT, но стоит беспокоиться, что преобразование (возможно, с использованием
raise
аргумента).источник
parse_dates=[['Start date', 'Start time'], ['End date', 'End time']])
. Pandas <3Принятый ответ работает для столбцов с типом данных
string
. Для полноты: я сталкиваюсь с этим вопросом, когда ищу, как это сделать, когда столбцы имеют типы данных: дата и время.источник
time
dtype в пандах. У меня есть скорееtimedelta
(иdatetime
), и в этом случае вам просто нужно их добавить, см. Мой ответpd.datetime
устарел, иdatetime
вместо этого предлагается просто явно импортировать модуль.Вы можете использовать это, чтобы объединить дату и время в один столбец фрейма данных.
Чтение .csv файла с объединенными столбцами Date_Time:
Вы можете использовать эту строку, чтобы сохранить и другие столбцы.
источник
date_parser
, напримерparser = lambda date: pd.datetime.strptime(date, '%d-%b-%y %H:%M:%S')
Вы можете привести столбцы, если типы различны (datetime и timestamp или str), и использовать to_datetime:
Результат:
Лучший,
источник
У меня недостаточно репутации, чтобы комментировать jka.ne, поэтому:
Мне пришлось изменить строку jka.ne, чтобы она работала:
Это может помочь другим.
Кроме того, я протестировал другой подход, используя
replace
вместоcombine
:который в случае OP будет:
Я рассчитал оба подхода для относительно большого набора данных (> 500000 строк), и оба они имеют одинаковое время выполнения, но использование
combine
происходит быстрее (59 секунд дляreplace
против 50 секунд дляcombine
).источник
Ответ действительно зависит от типа ваших столбцов . В моем случае у меня было
datetime
иtimedelta
.Если это ваш случай, вам просто нужно добавить столбцы:
источник
datetime
иtimedelta
. Основной ответ каким-то образом выяснить, что столбцы были строками, или, может быть, это был просто ответ, который сработал для того, кто разместил вопрос.Вы также можете конвертировать
datetime
без конкатенации, путем объединенияdatetime
иtimedelta
объектов. В сочетании сpd.DataFrame.pop
возможностью одновременного удаления исходных серий:источник
Сначала убедитесь, что у вас есть правильные типы данных:
Тогда вы легко их совместите:
источник
Используйте
combine
функцию:источник
В моем наборе данных были данные с разрешением в 1 секунду в течение нескольких дней, и анализ предложенными здесь методами был очень медленным. Вместо этого я использовал:
Обратите внимание, что использование
cache=True
делает синтаксический анализ дат очень эффективным, поскольку в моих файлах есть только пара уникальных дат, что неверно для комбинированного столбца даты и времени.источник
ДАННЫЕ:
<TICKER>, <PER>, <DATE>, <TIME> , <OPEN>, <HIGH>, <LOW>, <CLOSE>, <VOL> SPFB.RTS, 1, 20190103,100100 , 106580.0000000,107260.0000000,106570.0000000 , 107230.0000000,3726
КОД:
источник