如何解决 Pandas 中的错误“远程过程调用协议流中的传入表格数据流不正确

How to solve error in Pandas for "The incoming tabular data stream in remote procedure call protocal stream is incorrect

我有一个 pandas 数据框,我正在将其写入 SQL 服务器中的 table。数据框包含以下数据类型:

Contact_ID                      object
Skill_No                       float64
Skill_Name                      object
Campaign_No                    float64
Campaign_Name                   object
Agent_No                       float64
Agent_Name                      object
Team_No                        float64
Team_Name                       object
Start_Date                      object
Disp_Code                      float64
Disp_Name                       object
Disp_Comments                   object

当我尝试写入 SQL 服务器时,出现以下错误:

ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 16 (""): 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)')

我已经尝试将 sql table 中的数据类型转换为十进制、浮点数,然后再转换回来,但似乎没有任何效果。我该如何解决?

我遇到了同样的错误消息,在我的例子中,这是由 pandas.DataFrame 的某些列中的某些 float('inf') 和 float('-inf') 值引起的。我通过将无穷大值更改为 1 或 -1 来解决这个问题,这在我的项目上下文中很有意义。或者,您可以删除这些行。

    df.loc[df[col_name] == float('-inf'), col_name] = -1
    df.loc[df[col_name] == float('inf'), col_name] = 1