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()转换
以后有好的方法再说