You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中合并DataFrame的年、月、日三列生成时间序列?

合并DataFrame年/月/日列为时间序列格式的方法

嘿,这个需求在时间序列预处理里太常见了!我给你分享几个实用的方案,都是基于pandas的,你可以根据自己的场景选:

方法1:直接用pd.to_datetime构造时间类型(最推荐)

这是最省心的方式,pandas的to_datetime函数可以直接接收包含年、月、日的列作为参数,自动生成标准的datetime64类型列——这可是后续时间序列分析的最佳格式(比如做重采样、滑动窗口都直接能用)。

代码示例:

import pandas as pd

# 假设你的DataFrame名为df,列名分别是「年份」「月份」「日期」
df['合并日期'] = pd.to_datetime(df[['年份', '月份', '日期']])

这个方法还会自动校验日期合法性(比如2月30号这种无效日期会报错,你可以通过errors='coerce'参数把无效值转成NaT),比手动拼接字符串靠谱多了。

方法2:手动拼接成字符串格式(按需使用)

如果你确实需要先得到「年-月-日」格式的字符串列,可以用字符串拼接,但记得要补全月/日的前导零,保证格式统一:

# 先把数值类型的年/月/日转成字符串,并用zfill(2)补零
df['日期字符串'] = (
    df['年份'].astype(str) + '-' +
    df['月份'].astype(str).str.zfill(2) + '-' +
    df['日期'].astype(str).str.zfill(2)
)

# 如果之后要转成时间类型,只需要再跑一遍:
# df['合并日期'] = pd.to_datetime(df['日期字符串'])

方法3:用apply自定义拼接(不推荐大数据量)

这个方法灵活性高,但效率偏低,数据量大的时候不建议用:

df['合并日期'] = df.apply(
    lambda row: f"{row['年份']}-{row['月份']:02d}-{row['日期']:02d}",
    axis=1
)
# 同样,转成时间类型还是要靠pd.to_datetime
df['合并日期'] = pd.to_datetime(df['合并日期'])

总结一下:优先选方法1,直接生成datetime类型,后续时间序列操作一步到位;如果有特殊格式需求再考虑方法2,方法3只适合小数据量的临时处理。

内容的提问来源于stack exchange,提问作者k.vil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:36:38