在熊猫数据框上使用 str.contains [重复]

Posted

技术标签:

【中文标题】在熊猫数据框上使用 str.contains [重复]【英文标题】:Using str.contains on pandas dataframe [duplicate] 【发布时间】:2015-10-23 02:15:04 【问题描述】:

这个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

有人有什么想法吗?

【问题讨论】:

你能把df_Anomalous_Vendor_Reasons['V'].str.contains("File*|registry*")的情况发一下吗,你还需要这里的星号吗? 我似乎无法复制。可以发df_Anomalous_Vendor_Reasons.to_msgpack() 给我们吗? @MikeGraham:你确定吗?无论如何,regex=Truestr.contains 在 0.16.2 中的默认值,而且它似乎已经使用正则表达式编译多年了。 会不会像我的 df 中有 Nan 值一样简单? 好的,就是这样。抱歉,我是新手——我已经做了一个月了,即使是在 python 中,我也已经开始使用没有背景的 pandas——所以我需要很多帮助 【参考方案1】:

感谢上面的 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 的布尔值将被反转。

【讨论】:

很好的答案 - 我对此感到很困惑 非常棒的答案

以上是关于在熊猫数据框上使用 str.contains [重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据 str.contains() 找到的行添加列。熊猫

带有熊猫字符串列表的 str.contains 的可扩展解决方案

如何在熊猫数据框上使用 sklearn TFIdfVectorizer

按包含 str 过滤熊猫数据帧行

多索引熊猫数据框上的值错误

在熊猫数据框上应用正则表达式函数