在pandas数据帧上使用str.contains

时间:2015-07-31 11:51:02

标签: python arrays string excel pandas

此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

有人有任何想法吗?

1 个答案:

答案 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的布尔值将被反转。