当前位置: 首页 > 知识库问答 >
问题:

字符串包含查找:NaN导致值错误

柴文林
2023-03-14

如果要筛选列值中包含字符串的行,可以使用类似于data.sample\u id.str.contains('hph')(前面回答:检查pandas dataframe列中的字符串是否在列表中,或者检查字符串是否在pandas dataframe中)。

但是,我的查找列包含emtpy单元格。因此,str.contains()。

`ValueError: cannot index with vector containing NA / NaN values``

工作原理:

# get all runs 
mask = [index for index, item in enumerate(data.sample_id.values) if 'zent' in str(item)]

有没有比这个更优雅、更快的方法(类似于str.contains())呢?


共有2个答案

孔礼骞
2023-03-14

IIUC您也可以过滤掉这些行

data['sample'].dropna().str.contains('hph')

例子:

In [38]:
df =pd.DataFrame({'a':['hph', np.NaN, 'sadhphsad', 'hello']})
df

Out[38]:
           a
0        hph
1        NaN
2  sadhphsad
3      hello

In [39]:
df['a'].dropna().str.contains('hph')

Out[39]:
0     True
2     True
3    False
Name: a, dtype: bool

因此,通过先调用dropna,您就可以在系列上安全地使用str.contains,因为不会有NaN

另一种处理空值的方法是使用not null

In [43]:
(df['a'].notnull()) & (df['a'].str.contains('hph'))

Out[43]:
0     True
1    False
2     True
3    False
Name: a, dtype: bool

但我认为传递na=False会更干净(@jezrael的回答)

卫学真
2023-03-14

您可以将str.contains中的参数na设置为False

print (df.a.str.contains('hph', na=False))

使用EdChum示例:

df = pd.DataFrame({'a':['hph', np.NaN, 'sadhphsad', 'hello']})
print (df)
           a
0        hph
1        NaN
2  sadhphsad
3      hello

print (df.a.str.contains('hph', na=False))
0     True
1    False
2     True
3    False
Name: a, dtype: bool
 类似资料:
  • 问题内容: 要查找当前文件夹中所有包含“ foo”的文件,我使用: 要查找当前文件夹中所有包含“ bar”的文件,我使用: 但是,如何查找不包含“ foo”和“ bar”的所有文件? 问题答案: 要打印 线 不包含某些字符串,可以使用标志: 这样就为您提供了 不 包含或的所有行。 要打印不包含某些字符串的 文件 ,请使用该标志。要不匹配多个字符串,可以将正则表达式与标志一起使用(可以使用多个reg

  • 我的Firebase查询有点麻烦。我想查询objects,其中objects子值包含某个字符串。到目前为止,我有一些东西看起来是这样的: 但这只给出起始值为“b”的对象。我想要包含字符串“b”的对象。我该怎么做?

  • 问题内容: 我一直在尝试找出如何使用MySQL进行查询的方法,该查询检查特定列中的值(字符串)是否包含某些数据(字符串),如下所示: 在PHP中,该函数称为,因此可能: 问题答案: 实际上很简单: 的是用于设置任何字符(无,一个或多个)的通配符。请注意,这在非常大的数据集上可能会变慢,因此,如果数据库增长,则需要使用全文索引。

  • 我试图检测字符串是否有NumericValue和AlphaValue。如果它只是数字,那么;如果它是数字,那么。我找不到办法让它发挥作用。我似乎找到了一种方法,但在运行时崩溃了,在logcat中声明,if语句是一个问题,但我不知道它是为什么或如何出现的。 用于帮助的链接是: 如何在Java中检查字符串是否只包含数字 Java-查看字符串中是否包含任何字符 告诉字符串是否包含a-z字符 主要活动;

  • 我知道拆分字符串并使用运算符是可能的,但我想知道是否可以使用字符串比较轻松地完成。

  • 我能够通过使用下面这个问题的注释提供的代码来解决这个问题。所有其他帖子都是有效的! 我使用的有用的东西来自第一个评论。虽然提供的所有示例代码似乎也是有效的!