本文介绍如何使用 pandas 将日期列快速转换为以首个(或最小)日期为基准的“天数差”列,适用于时间序列分析、特征工程等场景,核心方法是利用 `sub()` 和 `dt.days` 实现高效计算。
在数据分析中,常需将原始日期列标准化为相对天数(例如“距首日第几天”),便于建模或可视化。给定一个由年、月、日三列构成的 DataFrame,首先需将其合并为标准 datetime64 类型,再计算与参考日期的时间差。
以下为完整实现步骤:
etime(df) 自动解析年/月/日三列,返回 Series;再通过 .to_frame('Date') 转为单列 DataFrame;import pandas as pd
df = pd.DataFrame({
'year': [2015, 2015, 2015],
'month': [2, 2, 2],
'day': [4, 5, 10]
})
# 构建日期列并计算相对天数(以首行为基准)
out = pd.to_datetime(df).to_frame('Date')
out['Days_from_start'] = out['Date'].sub(out['Date'].iloc[0]).dt.days
print(out)输出:
Date Days_from_start 0 2015-02-04 0 1 2015-02-05 1 2 2015-02-10 6
⚠️ 注意事项:
该方法简洁、向量化、性能优异,是 pandas 时间特征工程中的标准实践。