如何将年、月、日、时分列合并为单个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
相关产品推荐
相关产品推荐

