У меня есть pandas dataframe df
с датами в виде строк:
Date1 Date2
2017-08-31 1970-01-01 17:35:00
2017-10-31 1970-01-01 15:00:00
2017-11-30 1970-01-01 16:30:00
2017-10-31 1970-01-01 16:00:00
2017-10-31 1970-01-01 16:12:00
Я хочу заменить каждую часть даты в столбце Date2
на соответствующую дату в Date1
, нооставьте время без изменений, поэтому вывод:
Date1 Date2
2017-08-31 2017-08-31 17:35:00
2017-10-31 2017-10-31 15:00:00
2017-11-30 2017-11-30 16:30:00
2017-10-31 2017-10-31 16:00:00
2017-10-31 2017-10-31 16:12:00
Я достиг этого, используя панд replace
и регулярных выражений как таковых
import re
date_reg = re.compile(r"([0-9]{4}\-[0-9]{2}\-[0-9]{2})")
df['Market Close Time'].replace(to_replace=date_reg, value=df['Date1'], inplace=True)
Но этот метод очень медленный (> 10минут) для фрейма данных, содержащего только 150 тыс. строк.
Решение этого поста реализует numpy np.where
, что намного быстрее - как я могу использовать np.where
в этом примере, илиЕсть ли еще более эффективный способ выполнить эту операцию?