dataframe时间序列无法写入数据库(字段类型DATETIME)

探讨Pandas数据帧中时间序列处理与SQLite数据库兼容性问题,解析datetime格式冲突及解决方案,涉及Timestamp转换难点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dataframe时间序列写入sqlite时,出错
dataframe时间序列处理:df[‘dt’] = pd.to_datetime(df[‘dt’])
sqlite中时间字段格式为datetime
写入数据库失败

原因1
pandas的dataframe不能保存datetime格式
pd.to_datetime()转换的结果,
虽然显示2020-01-01 00:00:00
但是type是<class ‘pandas._libs.tslibs.timestamps.Timestamp’>
导入数据库字段类型为DATETIME时,无法匹配

原因2
使用pd.to_pydatetime(),可以转换为datetime.datetime()格式
单独print显示type为<class ‘datetime.datetime’>
别高兴太早
保存回dataframe格式时,会自动改回<class ‘pandas._libs.tslibs.timestamps.Timestamp’>
pandas和python定义的datetime格式不一样,
所以才会有to_datetime和to_pydatetime()同时存在
太坑了
不知道其他数据库能不能支持<class ‘pandas._libs.tslibs.timestamps.Timestamp’>直接导入

原因3
django框架models定义数据库时候,只能定义DateTimeField/DateField/TimeField
没有办法直接选择Timestamp等类型
即使手动改成Timestamp也无法直接写入pandas的Timestamp

解决方案
没有完美的办法,目前把dataframe时间序列写入数据库
把时间序列转为字符串格式
数据库对应字段也改字符串格式
直接存,从数据库中读取后,再做to_datetime()转换
以后有好的方法再说

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

779醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值