Python:CSV日期列从月/日/年转为时间戳的最优Pythonic写法
嘿,这个需求用pandas来实现简直是绝配——既符合Pythonic的精简风格,又能直接完成原地修改,几行代码就能搞定!我给你两个方案,优先推荐第一个:
方案一:用pandas(最精简高效)
pandas处理CSV和日期转换天生擅长,代码非常简洁:
import pandas as pd # 读取CSV文件 df = pd.read_csv('你的文件名.csv') # 原地转换目标日期列:字符串 → datetime → 秒级timestamp df['目标日期列名'] = pd.to_datetime(df['目标日期列名'], format='%m/%d/%Y').astype('int64') // 10**9 # 原地写入覆盖原CSV,不要写入pandas自动生成的索引列 df.to_csv('你的文件名.csv', index=False)
关键细节说明:
pd.to_datetime(..., format='%m/%d/%Y'):明确指定原日期格式,让解析更准确高效.astype('int64') // 10**9:pandas的datetime转整数是纳秒级时间戳,除以10^9就得到常用的秒级时间戳;如果需要毫秒级,去掉// 10**9即可index=False:避免保存时多出一列无意义的索引,完美还原原CSV结构
方案二:用标准库csv(无第三方依赖)
如果不想额外安装pandas,用Python自带的csv库也能实现,代码稍长但同样清晰:
import csv from datetime import datetime file_path = '你的文件名.csv' # 读取所有数据并转换日期列 with open(file_path, 'r', newline='') as infile: reader = csv.DictReader(infile) fieldnames = reader.fieldnames # 保留原列顺序 processed_rows = [] for row in reader: # 解析日期并转成秒级timestamp date_obj = datetime.strptime(row['目标日期列名'], '%m/%d/%Y') row['目标日期列名'] = str(int(date_obj.timestamp())) processed_rows.append(row) # 原地写入覆盖原文件 with open(file_path, 'w', newline='') as outfile: writer = csv.DictWriter(outfile, fieldnames=fieldnames) writer.writeheader() writer.writerows(processed_rows)
关键细节说明:
- 用
csv.DictReader按列名操作,不需要关心列的位置,更直观 datetime.timestamp()直接生成秒级时间戳,转成字符串保证写入CSV后格式正确
这两个方案都能实现你要的“读取后原地完成转换”的需求,优先推荐pandas方案,处理大文件时速度优势更明显~
内容的提问来源于stack exchange,提问作者Ant
相关产品推荐
相关产品推荐

