在熊猫数据框上使用 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=True
是 str.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 的可扩展解决方案