如何高效将CSV中DAY、YEAR、MONTH列合并为datetime64[ns]类型列?
更高效的datetime合并方法
你的代码能实现需求,但通过字符串拼接再转datetime的方式存在不必要的性能开销,尤其是数据量较大时。Pandas提供了直接基于数值列生成datetime的更优方案:
推荐方案:直接用pd.to_datetime处理数值列
不需要将整数列转为字符串,pd.to_datetime可以直接接收包含year、month、day的DataFrame,自动完成合并:
# 直接在第0列插入合并后的DATE列 df.insert(0, "DATE", pd.to_datetime(df[["YEAR", "MONTH", "DAY"]]))
原理说明:
Pandas内部会直接处理整数类型的年、月、日数值,跳过字符串转换的中间步骤,不仅代码更简洁,还能大幅提升处理速度、降低内存占用。
备选方案:自定义列映射
如果你的列名不是标准的YEAR/MONTH/DAY,可以通过字典指定对应关系:
df["DATE"] = pd.to_datetime({ "year": df["YEAR"], "month": df["MONTH"], "day": df["DAY"] }) # 若要放在第0列,执行insert: df.insert(0, "DATE", df.pop("DATE"))
对比原代码的优势
- 避免了整数→字符串→datetime的转换链条,减少计算开销
- 代码行数更少,逻辑更直观
- 无需担心字符串拼接可能出现的格式异常(比如个位数日期/月份的补零问题,Pandas会自动处理)
内容的提问来源于stack exchange,提问作者arsia452
相关产品推荐
相关产品推荐

