Pandas中按列指定天数快速增量日期的向量化方法咨询
向量化方法实现日期按动态天数增量计算
完全理解你的痛点——apply()逐行处理在大数据集上确实慢得让人头疼,其实Pandas本身就支持完全向量化的方式来实现这个需求,根本不用逐行迭代。
解决方案代码
import pandas as pd # 先构造你的示例数据集 df = pd.DataFrame( { 'Date_Installed': pd.to_datetime(['2018-11-15', '2018-11-15']), 'days_from_instalation': [2, 3] }, index=[11885, 111885] ) # 核心向量化操作:直接将天数列转为Timedelta后与日期列相加 df['desired_date'] = df['Date_Installed'] + pd.to_timedelta(df['days_from_instalation'], unit='D') # 输出验证 print(df.to_dict())
为什么这个方法更快?
pd.to_timedelta()可以直接将整列的数值转换为时间差对象,这是一个向量化操作,底层由C语言实现,没有Python层面的循环开销。- Pandas的日期列(
datetime64类型)支持直接和时间差列进行元素级别的加法运算,整个过程都是批量处理,性能比apply()的逐行调用快几个数量级,尤其在百万级以上的数据集上差异会非常明显。
输出结果
运行后你会得到和预期完全一致的结果:
{'Date_Installed': {11885: Timestamp('2018-11-15 00:00:00'), 111885: Timestamp('2018-11-15 00:00:00')}, 'days_from_instalation': {11885: 2, 111885: 3}, 'desired_date': {11885: Timestamp('2018-11-17 00:00:00'), 111885: Timestamp('2018-11-18 00:00:00')}}
内容的提问来源于stack exchange,提问作者Yehoshaphat Schellekens
相关产品推荐
相关产品推荐

