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

如何用Python优雅地重排CSV文件中的日期列并转换日期格式?

Pythonic 方法转换 CSV 日期格式并调整列顺序

要搞定你这个CSV格式转换需求,最符合Python风格的方式就是用标准库的csv和datetime模块来实现——不需要额外安装第三方包,代码简洁直观,还完全符合PEP8规范。

标准库实现方案(轻量首选)

这个方案适合大多数场景,尤其是处理大文件时,逐行读写不会占用过多内存:

import csv
from datetime import datetime

# 替换成你实际的输入输出文件路径
INPUT_PATH = "input.csv"
OUTPUT_PATH = "output.csv"

def reformat_date(date_str):
    """把YYYY-MM-DD格式的日期字符串转为DD/MM/YYYY"""
    return datetime.strptime(date_str, "%Y-%m-%d").strftime("%d/%m/%Y")

# 用上下文管理器自动处理文件开闭
with open(INPUT_PATH, 'r', newline='') as infile, open(OUTPUT_PATH, 'w', newline='') as outfile:
    csv_reader = csv.reader(infile)
    csv_writer = csv.writer(outfile)
    
    # 遍历每一行,重构列顺序并转换日期
    for row in csv_reader:
        # 构造新行:转换后的日期 + 原前两列 + 原第四列
        new_row = [reformat_date(row[2])] + row[:2] + row[3:]
        csv_writer.writerow(new_row)

为什么这个方案很Pythonic?

  • 依赖标准库:不需要额外引入第三方工具,保证代码的可移植性和轻量性;
  • 上下文管理器:with语句自动处理文件的打开和关闭,避免资源泄漏,这是Python推荐的资源管理方式;
  • 简洁的列表操作:用列表拼接直接调整列顺序,逻辑一目了然,没有冗余代码;
  • 单一职责函数:reformat_date专注于日期格式转换,符合模块化设计思路;
  • 迭代式处理:逐行读取写入,即使是GB级别的大文件也能轻松处理,不会爆内存。

大数据量/复杂场景可选:Pandas方案

如果你的数据量极大,或者需要后续做更多表格操作,用pandas的写法同样很Pythonic,代码更简洁:

import pandas as pd

# 读取CSV,因为原文件没有表头,指定header=None
df = pd.read_csv("input.csv", header=None)
# 转换日期格式并赋值到新的第一列
df[0] = pd.to_datetime(df[2]).dt.strftime("%d/%m/%Y")
# 重新排列列顺序:新第一列 + 原前两列 + 原第四列
df = df[[0, 1, 2, 3]]
# 写入输出文件,不保存索引和表头
df.to_csv("output.csv", header=None, index=False)

不过如果只是单纯的格式转换,标准库的方案更贴合"Pythonic"的轻量原则哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:47:44