如何使用write_csv保存时间数据到CSV文件且不含T/Z字符?
解决CSV保存时间格式被转为ISO8601带T/Z的问题
核心问题在于你直接写入了datetime类型对象,write_csv(或相关CSV写入工具)会默认将其序列化为ISO8601标准格式(含T分隔符和Z时区标识)。要保留YYYY-MM-DD HH:MM:SS格式,必须手动将时间对象转为指定格式的字符串后再保存。
情况1:使用Pandas的to_csv(常见场景)
如果你的数据存在DataFrame中,先把datetime列转为目标格式的字符串:
# 将datetime列转为指定格式的字符串 df['your_time_column'] = df['your_time_column'].dt.strftime('%Y-%m-%d %H:%M:%S') # 保存CSV df.to_csv('output.csv', index=False)
情况2:使用Python标准库csv模块
遍历数据时,检查并转换datetime对象为字符串:
import csv from datetime import datetime # 示例数据,包含datetime对象 data = [ ["id", "time", "value"], [1, datetime(2022, 12, 12, 8, 0, 0), "sample1"], [2, datetime(2022, 12, 13, 9, 30, 0), "sample2"] ] with open('output.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) for row in data: # 处理每行中的datetime对象,转为目标格式 processed_row = [ item.strftime('%Y-%m-%d %H:%M:%S') if isinstance(item, datetime) else item for item in row ] writer.writerow(processed_row)
关键注意点
- 确保所有时间类型数据在写入前都被转为字符串,避免工具自动序列化
- 如果你的原始数据已经是字符串格式仍出现问题,检查是否在读取或处理过程中被意外转为datetime对象
内容的提问来源于stack exchange,提问作者Jerison K
相关产品推荐
相关产品推荐

