创建新的 pandas 数据框列,其中包含搜索子字符串的布尔输出

jus*_*zzy 2 python dataframe pandas

我想创建一个新列,如果在现有列中找到子字符串,它将返回 True,反之亦然。

因此,在这个示例中,我想在 a 列中搜索子字符串“abc”,并创建一个布尔列 b,无论 a 列是否包含该字符串。

a      b
zabc   True
wxyz   False
abcy   True
defg   False
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的东西

df['b'] = df['a'].map(lambda x: True if 'abc' in x else False)
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误,说“‘NoneType’类型的参数不可迭代”

我也尝试过

df['b'] = False
df['b'][df['a'].str.contains('abc')] = True
Run Code Online (Sandbox Code Playgroud)

但我收到错误“无法使用包含 NA / NaN 值的向量进行索引”

有人可以解释一下这些错误以及我能做些什么吗?我已确认 ['a'] 存在并包含值。但有些行包含 None 值。

Flo*_*ard 6

这是怎么做的。

df["b"] = df["a"].str.contains("abc")
Run Code Online (Sandbox Code Playgroud)

关于你的错误。

似乎您的 a 列中有 np.nan 值,那么方法 str.contain 将返回这些值的 np.nan ,当您尝试使用包含 np.nan 值的数组进行索引时,pandas 告诉您这是不可能的。