在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都将被倒置。