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

如何将年、月、日、时分列合并为单个datetime列?

解决方法:合并多列为Datetime格式

你之前的代码失败是因为pd.to_datetime()无法直接识别HOUR_MINUTE列的格式——它需要单独的hour和minute字段,而不是合并在一起的四位数字。以下是两种可行的解决方案:

方法一:拆分HOUR_MINUTE列

先将HOUR_MINUTE拆分为小时和分钟列,再结合日期列生成datetime对象:

import pandas as pd

# 示例数据(可替换为你的数据集)
data = {
    "YEAR": [2015, 2015, 2015, 2015, 2015],
    "MONTH": [1, 1, 1, 1, 10],
    "DAY": [15, 2, 15, 15, 21],
    "HOUR_MINUTE": ["0010", "0020", "0045", "2110", "2359"]
}
df = pd.DataFrame(data)

# 拆分小时和分钟
df["HOUR"] = df["HOUR_MINUTE"].str[:2].astype(int)
df["MINUTE"] = df["HOUR_MINUTE"].str[-2:].astype(int)

# 合并为datetime列
df["new_column"] = pd.to_datetime(df[["YEAR", "MONTH", "DAY", "HOUR", "MINUTE"]])

# 可选:删除临时拆分的列
df = df.drop(columns=["HOUR", "MINUTE"])

方法二:字符串拼接后转datetime

直接将所有时间字段拼接成标准格式的字符串,再解析为datetime对象:

import pandas as pd

# 示例数据(可替换为你的数据集)
data = {
    "YEAR": [2015, 2015, 2015, 2015, 2015],
    "MONTH": [1, 1, 1, 1, 10],
    "DAY": [15, 2, 15, 15, 21],
    "HOUR_MINUTE": ["0010", "0020", "0045", "2110", "2359"]
}
df = pd.DataFrame(data)

# 拼接为YYYY-MM-DD HH:MM格式的字符串
df["datetime_str"] = (
    df["YEAR"].astype(str) + "-" +
    df["MONTH"].astype(str).str.zfill(2) + "-" +
    df["DAY"].astype(str).str.zfill(2) + " " +
    df["HOUR_MINUTE"].str[:2] + ":" +
    df["HOUR_MINUTE"].str[-2:]
)

# 解析为datetime格式
df["new_column"] = pd.to_datetime(df["datetime_str"])

# 可选:删除临时字符串列
df = df.drop(columns=["datetime_str"])

两种方法最终都会生成格式类似2015-01-15 00:10:00的datetime类型列。

内容的提问来源于stack exchange,提问作者user20977195

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:20:47