如果(满足条件)如何向列的行添加前缀

use*_*373 0 python pandas

我有一个包含某些列和行的数据框,如果满足某些条件,我需要在其中一列的行中添加前缀,

df = pd.DataFrame({'col':['a',0,2,3,5],'col2':['PFD_1','PFD_2','PFD_3','PFD_4','PFD_5']})
Samples=pd.DataFrame({'Sam':['PFD_1','PFD_5']})
Run Code Online (Sandbox Code Playgroud)

我需要根据样本数据框中的值向 df.col2 添加后缀,我用 np.where 进行了尝试,如下所示,

df['col2'] = np.where(df.col2.isin(samples.Sam),'Yes' + df.col2, 'Non_'+ df.col2)
Run Code Online (Sandbox Code Playgroud)

这会引发错误,

TypeError: can only perform ops with scalar values
Run Code Online (Sandbox Code Playgroud)

它不会返回我所要求的内容,并且在数据帧最后抛出错误应该是这样的,

>>>df.head()

col col2
a   Yes_PFD_1
0   no_PFD_2
2   no_PFD_3
3   no_PFD_4
5   Yes_PFD_5
Run Code Online (Sandbox Code Playgroud)

ash*_*gal 5

一旦我改变了“samples”的大写,你的代码对我来说工作得很好..

import pandas as pd
import numpy as np
df = pd.DataFrame({'col':['a',0,2,3,5],'col2': ['PFD_1','PFD_2','PFD_3','PFD_4','PFD_5']})
Samples=pd.DataFrame({'Sam':['PFD_1','PFD_5']})
df['col2'] = np.where(df.col2.isin(Samples.Sam),'Yes' + df.col2, 'Non_'+ df.col2)
df['col2']
Run Code Online (Sandbox Code Playgroud)

输出..

0     YesPFD_1
1    Non_PFD_2
2    Non_PFD_3
3    Non_PFD_4
4     YesPFD_5
Name: col2, dtype: object
Run Code Online (Sandbox Code Playgroud)