Pandas DataFrame时间差计算优化:寻求替代循环的向量化方案
Pandas 快速计算时间差(向量化方案)
直接用Pandas内置的向量化方法替代循环,速度能提升几个数量级,具体步骤如下:
确保时间列类型正确
如果TS_START还不是datetime格式,先转换:import pandas as pd df['TS_START'] = pd.to_datetime(df['TS_START'])向量化计算时间差并转成小时小数
用diff()方法直接计算相邻行的时间差,再通过dt.total_seconds()把时间差转成总秒数,最后除以3600得到小时单位的小数:df['delta_t'] = df['TS_START'].diff().dt.total_seconds() / 3600第一行因为没有上一行数据,
delta_t会是NaN,如果需要把第一行设为0,加一步填充:df['delta_t'] = df['delta_t'].fillna(0)
这个方案完全是向量化操作,底层基于C实现,比Python循环快得多,哪怕是几十万、上百万行的数据也能秒级处理。
内容的提问来源于stack exchange,提问作者niccolo_guazz
相关产品推荐
相关产品推荐

