此pandas python代码生成错误消息
" TypeError:一元的坏操作数类型〜:' float'"
我不知道为什么因为我试图操纵str对象
df_Anomalous_Vendor_Reasons[~df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*")] #sorts, leaving only cases where reason is NOT File or Registry
有人有任何想法吗?
答案 0 :(得分:33)
相信上面的Davtho1983评论,我认为为了清晰起见,我会在评论中添加颜色。
对于任何后来因同样的错误而磕磕绊绊的人(像我一样)。 这是一个非常简单的修复。来自pandas的documentation显示
Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)
发生的事情是contains()方法未应用于DataFrame中的na值,它们将保持为na。您只需要使用布尔值填充na值,这样就可以使用反转运算符~
。
上面的例子应该使用
df_Anomalous_Vendor_Reasons[~df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*", na=False)]
当然,根据预期的逻辑,应该为na参数选择False或True。您选择填充na的布尔值将被反转。