如何解决 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 中 set_index 函数的问题[重复]
在 Pandas 中使用 groupby 函数时如何解决“keyerror”?