【发布时间】:2018-11-08 01:04:19
【问题描述】:
我有一个熊猫数据框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
我已经使用 pandas 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)
但是对于只有 150k 行的数据帧,这种方法非常慢(>10 分钟)。
this post 的解决方案实现了更快的 numpy np.where - 在此示例中如何使用 np.where,或者是否有其他更有效的方法来执行此操作?
【问题讨论】:
标签: python pandas vectorization