我想查找包含字符串的行,如下所示:
DF[DF.col.str.contains("foo")]
但是,这会失败,因为某些元素是 NaN:
ValueError:无法使用包含 NA / NaN 值的向量进行索引
所以我求助于混淆
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文档:
str.replace
na :默认 NaN,填充缺失值的值。
因此,您可以执行以下操作:
In [21]: df.loc[df.a.str.contains("foo", na=False)] Out[21]: a 0 foo1 1 foo2