在pandas数据框上使用str.contains

这个pandaspython代码生成错误信息,

“TypeError:一元操作数的错误types:'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 

有人有什么想法?

感谢Davtho1983上面的评论,我想我会增加评论的颜色清晰。

对于任何人稍后与同样的错误(像我一样)磕磕绊绊。 这是一个非常简单的修复。 pandas文档显示

 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)] 

当然,我们应该根据预期的逻辑select“假”还是“真”。 无论select哪个布尔值填充na都将被倒置。