从SQL数据库读取时,Pandas无法将字符串转换为float

2024-06-25 05:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用SQLAlchemy创建的SQLite数据库,其格式如下

Code     Names              Amt1    Amt2   Amt3    Amt4
502      Real Management     11.4   1.3    -        -
5TG      80Commercial        85.8   152    4.845    4.12%
AZG      Equipment Love      11.6   117.1  -        -

但是当我试图用

pandas.read_sql('sqlite_table', con=engine)

它返回我一个错误ValueError: could not convert string to float: '-'

我知道pandas不能在Dataframe中注册-,但是我如何解决这个问题呢?有没有可能把它-读成0或者其他什么??在


Tags: 数据库pandassqlitenamessqlalchemy格式codereal
2条回答

-更新Amt3中的所有行(如果您已经设置了登录身份和定义的游标),将如下所示:

cur.execute("UPDATE sqlite_table SET Amt3 = 0 WHERE Amt3 = '-'")

这对我来说似乎很管用,即使是-,你的Atm3是什么类型的?在

^{pr2}$

所以我们已经复制了您的表,现在可以删除您的-

c.execute("UPDATE mytable SET Atm3 = NULL WHERE Atm3 = '-'") #set it to null

df = pd.read_sql("SELECT * from mytable", con)
print df

这将为我们提供输出:

  Code            Names  Atm1 Atm2  Atm3 Atm4
   502  Real Management  11.4  1.3  None    -

但是,如您所见,我可以检索Atm4-的表

我知道这个问题是老问题,但我最近遇到了同样的问题,这是谷歌的第一个结果。解决我的问题的方法是将pandas.read_sql('sqlite_table', con=engine)更改为完整查询pandas.read_sql('SELECT * FROM sqlite_table', con=engine),因为它似乎绕过了转换尝试,而且不需要编辑表。在

相关问题 更多 >