写入pd.to_csv时,以时间戳格式保留一列



我需要将以下数据帧写入csv:

prodid    value           timestamp  
322         4           2021-11-03 17:32:12.252   
123        34           2021-11-03 18:42:12.602
...

import datetime
df = pd.DataFrame([(0, 4, datetime.datetime.strptime("2021-11-03 14:32:13.4)02", "%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'])

当我将此写入StringIO缓冲区中的csv时:

import io
io_buff = io.StringIO()
df.to_csv(io_buff, sep='t', header=False, index=False)

列CCD_ 2不再被保留为CCD_。当我进一步处理这个io_buff时,例如将它写入Postgres表,列timestamp被写为numeric

使用pd.to_csv()编写时,如何保留时间戳格式?

csv文件格式不能保留任何类型,因为它只是一堆逗号分隔的字符串。csv文件的使用者可以将其解析为所需的类型。避免。

如果你只想用panda存储数据,然后再用panda读取,可以使用镶木地板或羽毛,这样你就可以保留你的类型(节省90%的磁盘空间,写/读速度提高10倍(。

如果要将数据写入postgres,请使用df.to_sql(..., method='multi')。如果这还不够快,并且你正在做一些疯狂的COPY魔术,那么按照这个答案https://stackoverflow.com/a/55495065/6110160如果问题仍然失败,请在信中添加更多细节。

相关内容

  • 没有找到相关文章

最新更新