【发布时间】:2017-01-03 23:49:14
【问题描述】:
我有一个包含某些列和行的数据框,如果满足某些条件,我需要在其中为其中一列的行添加前缀,
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']})
我需要根据 Samples 数据框中的值向 df.col2 添加一个后缀,我用 np.where 进行了尝试,如下所示,
df['col2'] = np.where(df.col2.isin(samples.Sam),'Yes' + df.col2, 'Non_'+ df.col2)
这会引发错误,
TypeError: can only perform ops with scalar values
它不返回我要求的内容,并抛出错误 最后数据框应该是这样的,
>>>df.head()
col col2
a Yes_PFD_1
0 no_PFD_2
2 no_PFD_3
3 no_PFD_4
5 Yes_PFD_5
【问题讨论】:
-
对我来说它有效,什么是错误?
-
将
Samples重命名为samples应该可以解决问题。 -
df['col2'] = np.where(df.col2.isin(samples.Sam),'Yes_' + df.col2, 'no_'+ df.col2)需要,但似乎还有其他问题。 -
是的,出了点问题,我找不到 :)
-
是的,我在我的问题中粘贴了错误