Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 提供的值不是float的有效实例。但是我';我不是要浮动的。我哪里出错了?_Python_Sql_Sql Server_Pandas_Pyodbc - Fatal编程技术网

Python 提供的值不是float的有效实例。但是我';我不是要浮动的。我哪里出错了?

Python 提供的值不是float的有效实例。但是我';我不是要浮动的。我哪里出错了?,python,sql,sql-server,pandas,pyodbc,Python,Sql,Sql Server,Pandas,Pyodbc,情况是,我正在通过API将一个表拉入python数据帧。此数据帧将直接拉入SQL server。 我遇到了一个问题,其中我遇到了一个空字符串或空单元格,它应该是数据类型float。即使我在SSMS中预先构建了一个表,其中没有一个float类型的列,我仍然会遇到这个错误 我将相同的数据拉入CSV进行故障排除,我们可以看到第78行数据的第9列中有一个空单元格。 我的python代码成功地将77行推送到SQL中,然后失败。如果我只是简单地给列指定nvarchar类型,那么当出现空字符串时,它不应该抱怨

情况是,我正在通过API将一个表拉入python数据帧。此数据帧将直接拉入SQL server。 我遇到了一个问题,其中我遇到了一个空字符串或空单元格,它应该是数据类型float。即使我在SSMS中预先构建了一个表,其中没有一个float类型的列,我仍然会遇到这个错误

我将相同的数据拉入CSV进行故障排除,我们可以看到第78行数据的第9列中有一个空单元格。 我的python代码成功地将77行推送到SQL中,然后失败。如果我只是简单地给列指定nvarchar类型,那么当出现空字符串时,它不应该抱怨


有人能告诉我为什么第12个参数(当我只有9列时)会出错,它希望成为一个浮点,而它应该满足于成为一个字符串吗

这里的图片显示了所有的部分都在一起,但不是完全在一起。

以下是可能适用或有帮助的代码。我已经注释掉了故障排除的所有其他列,没有复制到这里

for i in range(0, 5):
    now = datetime.now()
    print ('loading stage', i+1, 'of', number_of_locations, 'location:', all_unique_locations[i], ' current time:' , now.strftime ("%H:%M:%S"))
    current_stage = stageSummary.get_stage_summary_by_location_text(access_token, all_unique_locations[i], False )
    df = convert_string_to_dataframe(current_stage)
    all_stage_summary_df = all_stage_summary_df.append(df)

connStr = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER=<redacted>;DATABASE=AAV_DEVELOPMENT;Trusted_Connection=yes')
cursor = connStr.cursor()

for index,row in all_stage_summary_df.iterrows():
    print("Adding row ");
    cursor.execute("INSERT INTO dbo.StageSummaries([Primary_Location]\
                                                  ,[JobNo]\
                                                  ,[Stage]\
                                                  ,[Top_Depth_m]\
                                                  ,[Elapsed_Time_hh_mm_ss]\
                                                  ,[Start_Time]\
                                                  ,[End_Time]\
                                                  ,[Pumping_Time_hh_mm_ss]\
                                                  ,[Mainline_Pressure_Min_MPa]\
                                                  )values (?,?,?,?,?,?,?,?,?)"
                                                  ,row['Primary Location']
                                                  ,row['JobNo']
                                                  ,row['Stage #']
                                                  ,row['Top Depth (m)']
                                                  ,row['Elapsed Time (hh:mm:ss)']
                                                  ,row['Start Time']
                                                  ,row['End Time']
                                                  ,row['Pumping Time (hh:mm:ss)']
                                                  ,row['Mainline Pressure Min (MPa)']
                                                    ) 
    connStr.commit()
cursor.close()
connStr.close()

请查看填充链接:


您可以尝试将数据框中的空字段替换为0。

查看填充链接:


您可以尝试将数据帧中的空字段替换为0。

“为什么我在第12个参数(当我只有9列时)出现错误”-pyodbc
。execute()
语句由ODBC驱动程序转换为调用,
sp_preexec
接受三(3)个额外参数(
handle
params
、和
stmt
)在绑定参数的开头之前。@GordThompson感谢Gord,这很有道理。我认为可能是这样,但没有找到任何内容。“为什么我在第12个参数(我只有9列)时出错?”-pyodbc
.execute()
语句由ODBC驱动程序转换为调用,
sp_prepexec
接受三(3)个附加参数(
handle
params
stmt
)在开始绑定参数之前。@GordThompson感谢Gord,这很有意义。我认为可能是这样,但没有找到任何内容。我无法告诉你为什么我在onw搜索中没有遇到这篇文章,但它似乎做到了。我将每个字段替换为“”看起来效果不错,找到的假定空字符串实际上是NaN,因此它不适合任何类别。这允许我在任何实际为字符串的列中保留零。谢谢El Profesor!我不久前也遇到过类似的问题,fillna(0)我也帮了我。很高兴我能帮上忙!我无法告诉你为什么在我的onw搜索中没有看到这篇文章,但它似乎做到了。我用“”替换了每个字段看起来效果很好,找到的假定空字符串实际上是NaN,因此它不适合任何类别。这允许我在任何实际为字符串的列中保留零。谢谢El Profesor!我不久前遇到了一个非常类似的问题,fillna(0)也帮了我。很高兴我能帮上忙!
('42000', '[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 12 (""): The supplied value is not a valid instance of data type float. Check the source data for invalid values. An example of an invalid value is data of numeric type with scale greater than precision. (8023) (SQLExecDirectW)'\)