如何用Python将CSV文件中的YEAR、MO、DY、HR列合并为日期时间列
用Python合并CSV中的日期时间列
方法一:使用Pandas(推荐,适合批量数据处理)
Pandas是处理CSV数据的常用工具,能快速完成列合并并转换为标准日期时间格式:
import pandas as pd # 读取目标CSV文件 df = pd.read_csv("your_input.csv") # 合并YEAR/MO/DY/HR列,生成指定格式的DATE/TIME列 # 方式1:通过字符串拼接后转换 df["DATE/TIME"] = pd.to_datetime( df[["YEAR", "MO", "DY", "HR"]].astype(str).agg("-".join, axis=1) + ":00:00", format="%Y-%m-%d-%H:%M:%S" ) # 方式2:直接传入日期时间分量列,自动识别格式(更简洁) df["DATE/TIME"] = pd.to_datetime(df.assign(MI=0, SS=0)[["YEAR", "MO", "DY", "HR", "MI", "SS"]]) # 将结果保存到新CSV df.to_csv("your_output.csv", index=False)
方法二:使用Python标准库(无需额外安装依赖)
如果不想安装第三方库,用内置的csv模块也能实现:
import csv with open("your_input.csv", "r", newline="") as in_file, open("your_output.csv", "w", newline="") as out_file: reader = csv.DictReader(in_file) # 构造新表头,添加DATE/TIME列 fieldnames = reader.fieldnames + ["DATE/TIME"] writer = csv.DictWriter(out_file, fieldnames=fieldnames) writer.writeheader() for row in reader: # 将月份、日期、小时补零为两位数 month = row["MO"].zfill(2) day = row["DY"].zfill(2) hour = row["HR"].zfill(2) # 拼接成目标格式 row["DATE/TIME"] = f"{row['YEAR']}-{month}-{day} {hour}:00:00" writer.writerow(row)
两种方法都能将示例中的2011 | 1 | 1 | 6转换为2011-01-01 06:00:00格式的日期时间列。
内容的提问来源于stack exchange,提问作者user16728494
相关产品推荐
相关产品推荐

