我有一个 Pandas DataFrame,我通过 to_sql 和 sqlalchemy 发送到 MySQL。我在 SQL 中的浮点数有时会显示略微偏离的小数位(与 df 相比)并导致错误:“警告:(1265,“第 1 行的“股息”列的数据被截断”)”。如何舍入浮点数以使其与 DataFrame 中的值匹配?
这些值从 CSV 中提取并从字符串转换为浮点数。写入 Excel 时它们看起来很好,但发送到 SQL 时,数字略有偏差。
当涉及到二进制时,我已经研究了浮点数的问题,但我无法弄清楚在从 DataFrame 到 SQL 的传输过程中如何覆盖它。
from sqlalchemy import create_engine
import pandas as pd
def str2float(val):
return float(val)
data = pd.read_csv(
filepath_or_buffer = filename,
converters = {'col1':str2float}
db = create_engine('mysql://user:pass@host/database')
data.to_sql(con=db, name='tablename', if_exists='append', index=False)
db.dispose()
大多数浮点数类似于 0.0222000000,但每隔一段时间就会出现 0.0221999995。理想情况下,我希望它在末尾自动截断所有 0,但我会满足于第一个示例。但是,我需要将其向上舍入以匹配存储在 DataFrame 中的浮点数。