Python 3.x Postgres正在将NaN放入空值中
我正在python脚本上使用Python 3.x Postgres正在将NaN放入空值中,python-3.x,postgresql,null,nan,psycopg2,Python 3.x,Postgresql,Null,Nan,Psycopg2,我正在python脚本上使用psycopg2 脚本解析json文件,并将它们放在Postgres RDS中 当json文件中缺少一个值时,脚本将跳过特定列 (因此它应该在表中设置null值,但它将NaN) 有人遇到过这个问题吗 检查列是否为空的部分- 如果(str(df.loc[0][col])==”或df.loc[0][col]为None或str(df.loc[0][col])=='None'或str(df.loc[0][col col])=='NaN或str(df.loc[0][col co
psycopg2
脚本解析json文件,并将它们放在Postgres RDS中
当json文件中缺少一个值时,脚本将跳过特定列
(因此它应该在表中设置null
值,但它将NaN
)
有人遇到过这个问题吗
检查列是否为空的部分-
如果(str(df.loc[0][col])==”或df.loc[0][col]为None或str(df.loc[0][col])=='None'或str(df.loc[0][col col])=='NaN或str(df.loc[0][col col])='null'):
落差(柱,轴=1,原地=真)
其他:
cur.execute(“调用mrr.add_column_to_table('{0}','{1}');”。格式(table_name,col))
插入部分-
def copy_df_to_sql(df,conn,table_name):
如果len(df)>0:
df_columns=列表(df)
列=“,”。联接(df_列)#创建(col1,col2,…)
#创建值('%s','%s',…)每列一个'%s'
values=“values({})”.format(“,”.join([%s”表示df_列中的u]))
#创建插入到表(列)中的值('%s',…)
emp='“'
insert_stmt='insert INTO mrr.{}({}{}{}{}){}'。格式(表名、emp、列、emp、值)
cur=连接光标()
导入psycopg2.extras
psycopg2.extras.execute\u batch(cur、insert\u stmt、df.values)
康涅狄格州提交
当前关闭()
好的,所以发生这种情况的原因可能是因为pandas将null
值视为NaN
因此,当我在中向表中插入数据帧时,将
null
值插入为null,这是NaN
NaN表示“不是数字”。在代码的某个地方,您将字段视为一个数字。您能否至少向我们展示插入数据的代码?!我已经从脚本中添加了相关部分df是什么类型的?