如何用Python不借助pandas将整数日期列拆分为年月日及季度列
Python纯标准库实现日期拆分方案
实现逻辑
整数格式的日期遵循YYYYMMDD的8位结构,直接通过字符串切片即可拆分年、月、日,季度可通过公式(月份-1)//3 + 1计算得到,全程仅使用Python自带的csv模块处理文件,无需安装pandas等第三方依赖。
可直接运行代码
import csv # 请根据实际情况修改输入、输出文件路径 INPUT_PATH = "your_input.csv" OUTPUT_PATH = "your_output.csv" if __name__ == "__main__": with open(INPUT_PATH, "r", encoding="utf-8") as in_f, \ open(OUTPUT_PATH, "w", encoding="utf-8", newline="") as out_f: # 读取带表头的输入文件 csv_reader = csv.DictReader(in_f) # 定义输出表头 output_header = ["date", "day", "month", "year", "quarter"] csv_writer = csv.DictWriter(out_f, fieldnames=output_header) csv_writer.writeheader() for row in csv_reader: # 统一转为8位字符串,处理可能的前导零丢失问题 date_val = str(int(row["date"])).zfill(8) year = int(date_val[:4]) month = int(date_val[4:6]) day = int(date_val[6:]) quarter = (month - 1) // 3 + 1 # 写入处理后的行 csv_writer.writerow({ "date": row["date"], "day": day, "month": month, "year": year, "quarter": quarter })
特殊场景适配
如果你的原始CSV没有表头,仅包含单列日期值,可将读写逻辑替换为普通csv读写:
# 无表头场景的读写逻辑替换 csv_reader = csv.reader(in_f) csv_writer = csv.writer(out_f) # 写入自定义表头 csv_writer.writerow(["date", "day", "month", "year", "quarter"]) for row in csv_reader: date_val = str(int(row[0])).zfill(8) year = int(date_val[:4]) month = int(date_val[4:6]) day = int(date_val[6:]) quarter = (month - 1) // 3 + 1 csv_writer.writerow([row[0], day, month, year, quarter])
内容的提问来源于stack exchange,提问作者pasq
相关产品推荐
相关产品推荐

