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

如何在Python中为现有CSV添加月/日/年格式的日期列

解决JSON转CSV并添加日期列的问题

问题分析

核心问题点:

  • 使用DictWriter写入CSV时未处理表头逻辑,导致Pandas读取时将第一行数据误判为表头,日期列标题位置错乱
  • 手动添加表头列表时未正确匹配列结构,造成第一列产品名称丢失

方案一:纯CSV模块实现(推荐,避免多步读写)

直接在写入CSV时完成日期列添加,同时处理表头重复问题:

import json
from csv import DictWriter
import datetime

# 格式化今日日期为月/日/年格式
today_date = datetime.date.today().strftime("%m/%d/%Y")
# 定义完整字段列表
fieldnames = ['name', 'price', 'date']

with open('output.json', 'r') as inp, open('output.csv', 'a', newline='') as outp:
    writer = DictWriter(outp, fieldnames=fieldnames)
    
    # 仅当文件为空时写入表头,避免追加时重复输出表头
    if outp.tell() == 0:
        writer.writeheader()
    
    # 遍历JSON数据,添加日期后写入CSV
    for line in inp:
        row = json.loads(line)
        row['date'] = today_date
        writer.writerow(row)

方案二:用Pandas简化操作

利用Pandas直接读取JSON并追加到CSV,代码更简洁:

import pandas as pd
import datetime

# 读取每行一个JSON对象的文件
df = pd.read_json('output.json', lines=True)
# 添加格式化后的日期列
df['date'] = datetime.date.today().strftime("%m/%d/%Y")

# 追加到CSV:文件不存在时写表头,存在则跳过表头,不写入索引列
df.to_csv(
    'output.csv',
    mode='a',
    header=not pd.io.common.file_exists('output.csv'),
    index=False
)

原代码问题说明

  1. 首次写入output.csv时未调用writer.writeheader(),导致CSV无表头,Pandas读取时将第一行数据当作表头,后续添加日期列后结构混乱
  2. 手动指定headerList时未与实际数据列对应,且未处理追加逻辑,造成列匹配错误丢失数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:05:24