我正在尝试将回归的结果写回 MySQL,但是在迭代拟合值并使 NaN 写为空值时遇到问题。最初,我是这样进行迭代的:
for i in dataframe:
cur = cnx.cursor()
query = ("UPDATE Regression_Data.Input SET FITTEDVALUES="+(dataframe['yhat'].__str__())+" where timecount="+(datafrane['timecount'].__str__())+";")
cur.execute(query)
cnx.commit()
cur.close()
.....哪个SQL返回给我说:
"mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NaN'
因此,我一直试图通过仅在 yhat 不等于 NaN 时要求 Python 提交来过滤掉 NaN:
for i in dataframe:
if cleandf['yhat']>(-1000):
cur = cnx.cursor()
query = ("UPDATE Regression_Data.Input SET FITTEDVALUES="+(dataframe['yhat'].__str__())+" where timecount="+(datafrane['timecount'].__str__())+";")
cur.execute(query)
cnx.commit()
cur.close()
但后来我明白了:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
所以,我尝试在上面的语法中解决这个问题:
if cleandf['yhat'][i]>(-1000):
但然后得到这个:
ValueError: Can only tuple-index with a MultiIndex
然后尝试将 itterows() 添加到两者中,如下所示:
for i in dataframe.iterrows():
if cleandf['yhat'][i]>(-1000):
但遇到与上述相同的问题。
我不确定我在这里做错了什么,但假设它与 Pandas DataFrames 中的迭代有关。但是,即使我的迭代正确,我也想将 Null 写入出现 NaN 的 SQL 中。
那么,你觉得我应该怎么做呢?