使用pd.to_csv导出CSV时如何保留timestamp列的时间戳格式
问题原因
CSV属于纯文本文件格式,本身不存储任何数据类型信息。你遇到的timestamp列被识别为数值类型的问题,本质是to_csv写入时未指定时间序列化规则,datetime类型被序列化为了Unix时间戳数值,而非格式化的时间字符串。
解决方法
调用pd.to_csv()时通过date_format参数指定时间输出格式即可,示例代码如下:
import io import pandas as pd import datetime # 构造示例DataFrame df = pd.DataFrame([ (0, 4, datetime.datetime.strptime("2021-11-03 14:32:13.402", "%Y-%m-%d %H:%M:%S.%f")), (1, 34, datetime.datetime.strptime("2021-11-03 18:42:12.602", "%Y-%m-%d %H:%M:%S.%f")) ], columns=['prodid', 'value', 'timestamp']) io_buff = io.StringIO() # 写入时指定date_format参数,可按需调整时间格式 df.to_csv(io_buff, sep='\t', header=False, index=False, date_format='%Y-%m-%d %H:%M:%S.%f')
如果你有多个时间列需要配置不同的格式,也可以提前将datetime列通过dt.strftime转换为指定格式的字符串列后再写入:
# 手动转换时间列格式 df['timestamp'] = df['timestamp'].dt.strftime('%Y-%m-%d %H:%M:%S') df.to_csv(io_buff, sep='\t', header=False, index=False)
内容的提问来源于stack exchange,提问作者Tristan Tran
相关产品推荐
相关产品推荐

