【发布时间】:2018-06-26 05:25:46
【问题描述】:
执行以下函数时出现此错误,这是因为尝试将 NaN 插入数字列。始终用 0 替换 NaN 确实有效,但用 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:值不是数字 (NaN),不能用于 Oracle 数字
【问题讨论】:
-
顺便说一句
df.where(pd.notnull(df), None)returns a new DataFrame 替换,因此该行是无操作的。使用inplace=True时,操作将就位,但这会将dtype更改为对象。
标签: python pandas sqlalchemy null sql-insert