Python sqlite3创建表-操作错误:无此类列:nan

Python sqlite3创建表-操作错误:无此类列:nan,python,sqlite,nan,create-table,Python,Sqlite,Nan,Create Table,脚本可以正确插入任意数量的表,但以下情况除外: 采用与成功创建的其他表相同的格式。我不知道它为什么要识别nan列 create_wealth_income_top_decile =""" CREATE TABLE wealth_income_top_decile( id SERIAL PRIMARY KEY, "year" INT, "income_top_10" REAL, "wea

脚本可以正确插入任意数量的表,但以下情况除外: 采用与成功创建的其他表相同的格式。我不知道它为什么要识别
nan

create_wealth_income_top_decile ="""
CREATE TABLE wealth_income_top_decile(
    id SERIAL PRIMARY KEY,
    "year" INT,
    "income_top_10" REAL,
    "wealth_top_10" REAL
                                    );
                                """                                    

cursor.execute(create_wealth_income_top_decile)

""" Use for loop to populate table with tuples from csv """
for i in wealth_inc_data.to_records(index=False):
    insertinfo_2 ="""
        INSERT INTO wealth_income_top_decile(
                                        year, 
                                        income_top_10,
                                        wealth_top_10
                                        )
                                        VALUES
                                        """+str(i) + ';'
    cursor.execute(insertinfo_2)                                    

cursor.close()
CONN.commit()
这是我得到的错误:

文件“create_db.py”,第67行,在

cursor.execute(insertinfo_2)

sqlite3.0错误:没有这样的列:nan


我在将NAN值插入db时遇到了这个错误,我们的一些操作在插入db之前将整数值转换为NAN


如果您的db列不支持nan或inf的int或real值,请不要将其插入db。

很抱歉,我之前(已删除)的评论中有错误!显然,csv中的一个(或多个)值丢失,并被转换为(由)nan值。不确定您是如何读取CSV的,什么是
wealth\u inc\u data
?但是,根据您对数据的解释,您可能可以尝试使用零或类似的数字来填补空白。如果数据有其他“污点”,例如错误的小数分隔符,或者出现类似的异常(可能很难注意到),导致读卡器无法将字符串转换为数字,则可能会发生类似的情况。如果是这样,如果它是通过Pandas
read\u csv
,你可以在插入记录之前的某个地方给调用
wealth\u inc\u data.fillna(0)
一个快照,看看它是否适合这个问题。(*当然,nan被视为一个不带引号的字符串,这将引用列“nan”在SQL世界中,如果我在调试SQL语句时正确理解了错误消息和其他位,请始终检查(即输出、打印、记录、监视)命令字符串的值,以确保SQL的格式正确。在您的情况下,这不仅意味着在调用cursor.execute之前输出
insertinfo_2
的值,而且还意味着输出
str(i)
的值,因为它用于构造
insertinfo_2
。这不仅应该作为您自己调试的一部分进行,还应该在问题中提供此类信息。否则,我们不知道您实际上在数据库上执行什么!现在只是猜测而已。