使用str.contains忽略NAN

我想查找包含字符串的行,如下所示:

DF[DF.col.str.contains(“foo”)]

但是,这会失败,因为某些元素是NaN:

ValueError:无法使用包含NA/NaN值的向量进行索引

所以我求助于模糊的

DF[DF.col.notnull()][DF.col.dropna().str.contains(“foo”)]

有更好的办法吗

这里有一面旗帜:

[11]on

:df=pd.DataFrame([[“foo1”]、[“foo2”]、[“bar”]、[np.nan]],列=['a'])
At[12]on:df.a.str.contains(“foo”)
Output[12]:
0对
1正确
2错误
3南
名称:a,数据类型:对象
At[13]on:df.a.str.contains(“foo”,na=False)
Output[13]:
0对
1正确
2错误
3错误
姓名:a,数据类型:bool

请参阅str.replace文档:

na:默认NaN,为缺少的值填充值


因此,您可以执行以下操作:

[21]on

:df.loc[df.a.str.contains(“foo”,na=False)]
Output[21]:
A.
0 foo1
1食物2

发表评论