我想找到包含字符串的行,如下所示:
DF[DF.col.str.contains("foo")]
Run Code Online (Sandbox Code Playgroud)
但是,这会失败,因为有些元素是NaN:
ValueError:无法使用包含NA/NaN值的向量进行索引
所以我诉诸混淆
DF[DF.col.notnull()][DF.col.dropna().str.contains("foo")]
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
And*_*den 196
有一个标志:
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
Run Code Online (Sandbox Code Playgroud)
查看str.replace
文档:
na:默认NaN,缺失值的填充值.
所以你可以做到以下几点:
In [21]: df.loc[df.a.str.contains("foo", na=False)]
Out[21]:
a
0 foo1
1 foo2
Run Code Online (Sandbox Code Playgroud)
除了上面的答案,我会说对于没有单个单词名称的列,你可以使用: -
df[df['Product ID'].str.contains("foo") == True]
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.