Python/Pandas中如何解决‘Timestamp类型无法JSON序列化’错误?
解决Timestamp无法JSON序列化的问题
Hey there! 作为Python新手能搞定从MSSQL取数同步到Google Sheets已经超棒啦👏 关于你遇到的Object of type 'Timestamp' is not JSON serializable错误,其实核心原因很简单:pandas的Timestamp类型不是JSON标准支持的数据类型,而同步到Google Sheets的过程中(比如用gspread这类工具),通常需要把数据转成JSON格式传递,所以就触发了这个报错。
给你几个实用的解决办法,按需选就行:
方法1:批量把时间列转成字符串格式
这是最直接的方案,把所有Timestamp/datetime类型的列转成指定格式的字符串,JSON就能正常序列化了:
# 先找出所有datetime类型的列 time_cols = dfData.select_dtypes(include=['datetime64[ns]', 'datetime']).columns # 批量转换为你需要的日期字符串格式(比如YYYY-MM-DD HH:MM:SS) for col in time_cols: dfData[col] = dfData[col].dt.strftime('%Y-%m-%d %H:%M:%S')
这样处理后,时间数据会变成普通字符串,既能被JSON序列化,也能在Google Sheets里正常显示。
方法2:转成Python原生datetime对象
如果你希望Google Sheets能自动识别这些数据为日期格式(而不是纯字符串),可以把pandas的Timestamp转成Python原生的datetime对象,很多Google Sheets相关的库能直接处理原生datetime:
for col in dfData.select_dtypes(include=['datetime64[ns]']).columns: dfData[col] = dfData[col].dt.to_pydatetime()
方法3:转JSON时指定默认序列化规则
如果是在调用to_json()的时候报错,可以直接给方法传default=str参数,让JSON序列化器遇到无法处理的类型时自动转成字符串:
# 把DataFrame转成JSON格式的记录列表 json_records = dfData.to_json(orient='records', default=str)
小提示
可以先运行print(dfData.dtypes)确认哪些列是datetime64[ns]类型(也就是pandas的Timestamp),这样能更精准地处理目标列~
内容的提问来源于stack exchange,提问作者swolfe2
相关产品推荐
相关产品推荐

