我需要將以下資料幀寫入 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)
列timestamp不再保留為datetime. 當我進一步處理它時io_buff,例如將其寫入 Postgres 表,列timestamp被寫為numeric.
寫入時如何保留時間戳格式pd.to_csv()?
uj5u.com熱心網友回復:
csv 檔案格式不能保留任何型別,因為它只是一堆逗號分隔的字串。由 csv 檔案的使用者將其決議為所需的型別。躲開它。
如果您只想使用 Pandas 存盤資料并再次使用 Pandas 讀取,請使用鑲木地板或羽毛,這樣您將保留您的型別(并節省 90% 的磁盤空間,并使寫入/讀取速度提高 10 倍)。
如果要將資料寫入 postgres,請使用df.to_sql(..., method='multi'). 如果這還不夠快并且您正在做一些瘋狂的COPY魔術,那么請按照此答案https://stackoverflow.com/a/55495065/6110160進行操作,如果仍然失敗,請在問題中添加更多詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/355467.html
上一篇:從初始值開始的數字累積差
