【问题标题】:Using str.contains on pandas dataframe [duplicate]在熊猫数据框上使用 str.contains [重复]
【发布时间】: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——所以我需要很多帮助

标签: python arrays string excel 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 的布尔值将被反转。

【讨论】:

  • 很好的答案 - 我对此感到很困惑
  • 非常棒的答案
猜你喜欢
  • 2016-08-28
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 1970-01-01
相关资源
最近更新 更多