python - 使用 str.contains 忽略 NaN

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

DF[DF.col.str.contains("foo")]

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

ValueError: cannot index with vector containing NA / NaN values

所以我求助于混淆

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

有没有更好的办法?

最佳答案

有一个标志:

In [11]: df = pd.DataFrame([["foo1"], ["foo2"], ["bar"], [np.nan]], columns=['a'])

In [12]: df.a.str.contains("foo")
Out[12]:
0     True
1     True
2    False
3      NaN
Name: a, dtype: object

In [13]: df.a.str.contains("foo", na=False)
Out[13]:
0     True
1     True
2    False
3    False
Name: a, dtype: bool

str.replace文档:

na : default NaN, fill value for missing values.


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

In [21]: df.loc[df.a.str.contains("foo", na=False)]
Out[21]:
      a
0  foo1
1  foo2

https://stackoverflow.com/questions/28311655/

相关文章:

python - SQLAlchemy:如何过滤日期字段?

python - 在 namedtuple 中输入提示

python - 负面 list 索引?

python - 有效地检查 Python/numpy/pandas 中的任意对象是否为 NaN?

python - 向 Pandas 数据框插入一行

python - 你如何检查一个数字是否可以被另一个数字整除?

python - 在 TensorFlow 中使用预训练的词嵌入(word2vec 或 Glove)

python - 不区分大小写的 Flask-SQLAlchemy 查询

python - 管道子流程标准输出到变量

python - sqlite3.ProgrammingError : You must not u