Python Pandas to_sql:浮点二进制问题

Python Pandas to_sql:浮点二进制问题,python,dataframe,floating-point,pandas-to-sql,Python,Dataframe,Floating Point,Pandas To Sql,我有一个Pandas数据帧,我将通过to_sql和sqlalchemy发送到MySQL。我在SQL中的浮点有时显示的小数位稍有偏离(与df相比),并导致错误:“警告:(1265,“第1行‘股息’列的数据被截断”)”。如何舍入浮动,使其与数据帧中的值匹配 这些值从CSV中提取,并从字符串转换为浮点数。当写入Excel时,它们看起来很好,但当发送到SQL时,数字略有偏差 我已经研究了二进制时浮动的问题,但是我不知道如何在从DataFrame到SQL的传输过程中覆盖它 从sqlalchemy导入创建引

我有一个Pandas数据帧,我将通过to_sql和sqlalchemy发送到MySQL。我在SQL中的浮点有时显示的小数位稍有偏离(与df相比),并导致错误:“警告:(1265,“第1行‘股息’列的数据被截断”)”。如何舍入浮动,使其与数据帧中的值匹配

这些值从CSV中提取,并从字符串转换为浮点数。当写入Excel时,它们看起来很好,但当发送到SQL时,数字略有偏差

我已经研究了二进制时浮动的问题,但是我不知道如何在从DataFrame到SQL的传输过程中覆盖它

从sqlalchemy导入创建引擎
作为pd进口熊猫
def str2float(val):
返回浮动(val)
数据=pd.read\U csv(
filepath\u或\u buffer=文件名,
转换器={'col1':str2float}
db=创建引擎('mysql://user:pass@主机/数据库')
data.to_sql(con=db,name='tablename',如果_exists='append',index=False)
db.dispose()

大多数浮点值都与0.0222000000类似,但每隔一段时间它就会显示为0.0221999995。理想情况下,我希望它在最后自动截断所有0,但我会接受第一个示例。但是我需要将其取整以匹配存储在数据框中的浮点值。

我也有类似的问题。nu我导入到数据框中的mber有3位小数,但插入到SQL表中时,它有12位

我刚刚使用了
.round()
方法,它对我很有效

df["colname"] = df["colname"].round(3)