如何重新分类熊猫数据框列?

Bor*_*lis 4 python dataframe pandas

我有一个 Pandas 数据框,看起来像这样:

> print(df)

           image_name                       tags
0                img1       class1 class2 class3
1                img2                     class2
2                img3              class2 class3
3                img4                     class1
Run Code Online (Sandbox Code Playgroud)

如何重新分类tags列,以便为任何具有class3值的行分配字符串“yes”,其他所有字符串都分配字符串“no”?

我知道我可以使用以下方法检查搜索词的实例:

df['tags'].str.contains('class3')
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何将其集成到手头的任务中。

以下是预期的输出:

           image_name                       tags
0                img1                        yes
1                img2                         no
2                img3                        yes
3                img4                         no
Run Code Online (Sandbox Code Playgroud)

San*_*apa 5

使用np.where如:

df['tags'] = np.where(df['tags'].str.contains('class3'),'yes','no')
Run Code Online (Sandbox Code Playgroud)

或者

df['tags'] = 'no'
df.loc[df['tags'].str.contains('class3'),'tags'] = 'yes'
Run Code Online (Sandbox Code Playgroud)

或者

df['tags'] = ['yes' if 'class3' in s else 'no' for s in df3.tags.values]
Run Code Online (Sandbox Code Playgroud)

上述方法的输出:

print(df)
  image_name tags
0       img1  yes
1       img2   no
2       img3  yes
3       img4   no
Run Code Online (Sandbox Code Playgroud)