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

如何用Python按日期(从旧到新)排序带类型行的通用CSV文件?

解决Python对带类型行的CSV按日期排序的问题

没问题,我来帮你搞定这个CSV排序的需求!你的CSV文件比较特殊,前两行是列名和变量类型,之后才是数据行,所以排序的时候要保留前两行,只对数据部分按日期从旧到新排序。下面是具体的实现步骤和代码:

实现思路

  • 先读取CSV文件,把前两行(列名行、类型行)单独保存,剩下的是实际数据行
  • 对数据行,根据Time列的日期字符串转换为datetime对象,以此作为排序依据
  • 将排序后的数据行和前两行合并,重新写入CSV文件

完整代码

import csv
from datetime import datetime

# 输入文件路径和输出文件路径,根据你的实际路径修改
input_file = "your_input.csv"
output_file = "sorted_output.csv"

# 读取CSV内容
with open(input_file, 'r', newline='') as f:
    reader = csv.reader(f)
    # 提取前两行:列名和类型行
    header = next(reader)
    type_row = next(reader)
    # 读取所有数据行
    data_rows = list(reader)

# 按日期从旧到新排序数据行
# 日期格式是 DD-Mon-YY(比如20-May-15),用'%d-%b-%y'解析成可比较的datetime对象
data_rows.sort(key=lambda row: datetime.strptime(row[0], '%d-%b-%y'))

# 将排序后的内容写入新CSV
with open(output_file, 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    writer.writerow(type_row)
    writer.writerows(data_rows)

关键细节说明

  • 日期解析格式:%d对应两位日期,%b对应缩写月份(比如May),%y对应两位年份,完美匹配你CSV里的日期格式
  • 排序逻辑:用datetime对象作为排序依据,能确保日期按照真实的时间顺序排列,而不是字符串的字典序
  • 保留前两行:通过next(reader)单独读取前两行,排序后依然放在文件最开头,不会破坏原有的文件结构

运行这段代码后,你会得到一个新的CSV文件,里面的数据已经按日期从旧到新排好序啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:29:19