在pandas数据帧上使用str.contains

Dav*_*983 16 python arrays string excel pandas

这个pandas python代码生成错误消息,

"TypeError:一元〜:'浮动'的坏操作数类型"

我不知道为什么因为我试图操纵一个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
Run Code Online (Sandbox Code Playgroud)

有人有任何想法吗?

Jos*_*osh 35

相信上面的Davtho1983评论,我认为为了清晰起见,我会在评论中添加颜色.

对于任何后来因同样的错误而磕磕绊绊的人(像我一样).这是一个非常简单的修复.大熊猫的文档显示

Series.str.contains(pat, case=True, flags=0, na=nan, regex=True)
Run Code Online (Sandbox Code Playgroud)

发生的事情是contains()方法没有应用于DataFrame中的na值,它们将保持为na.您只需要使用布尔值填充na值,以便可以使用invert运算符~.

上面的例子应该使用

df_Anomalous_Vendor_Reasons[~df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*", na=False)]
Run Code Online (Sandbox Code Playgroud)

当然,应该根据预期的逻辑为na参数选择False或True.您选择用于填充na的布尔值将被反转.