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

Posted

技术标签:

【中文标题】如何解决 Pandas 中“远程过程调用协议流中的传入表格数据流不正确”的错误【英文标题】:How to solve error in Pandas for "The incoming tabular data stream in remote procedure call protocal stream is incorrect 【发布时间】:2020-05-26 04:19:51 【问题描述】:

我有一个要写入 SQL Server 表的 pandas 数据框。数据框包含以下数据类型:

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 Server 时,我收到以下错误:

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 表中的数据类型转换为十进制、浮点数,然后再转换回来,但似乎没有任何效果。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

我遇到了同样的错误消息,在我的情况下,这是由我的 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

【讨论】:

以上是关于如何解决 Pandas 中“远程过程调用协议流中的传入表格数据流不正确”的错误的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Pandas 代码中的日期时间错误?

如何解决 Pandas 中 set_index 函数的问题[重复]

Pandas:如何解决“错误标记数据”?

在 Pandas 中使用 groupby 函数时如何解决“keyerror”?

如何解决“模块‘pandas’没有属性‘scatter_matrix’”错误?

pandas.read_csv() 可以在同一列中应用不同的日期格式!这是一个已知的错误吗?如何解决?