在 Python Pandas 中将 NaN 转换为 Oracle Null



我在执行以下函数时收到此错误,这是因为NaN试图插入到数字列中。始终将 NaN 替换为 0 确实有效,但替换为 None 则不起作用。任何想法将不胜感激

def insertData(table_name, schema_name, df):
    if not df.empty:
        #input_data[file].fillna(0, inplace=True) # This works but replacing with 0's is not ideal
        df.where(pd.notnull(df), None) #This does not work
        values = df.to_dict(orient='records')
        table = sa.Table(table_name , conndict['meta'], autoload=True, schema=schema_name)
        result_proxy = conndict['conn'].execute(table.insert(), values)
        return result_proxy
    else:
        return None

(cx_Oracle.DatabaseError( DPI-1055:value 不是数字 (NaN(,不能在 Oracle 数字中使用

好吧,Pandas有它自己漂亮的DataFrame.to_sql((方法,它会自动处理NaN--> NULL转换:

df.to_sql('tab_name', sql_alchemy_conn, if_exists='append', index=False)

PS 以防您的 DF 有字符串 ( object ( 列 - 使用 dtype 参数(请参阅本答案中的示例(

相关内容

  • 没有找到相关文章

最新更新