2017-01-03 68 views
0

我有一个具有特定列和行的数据框,并且如果它满足一定的条件,我需要为其中一列的行添加前缀,如果(条件符合),如何将前缀添加到列的行中

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'] = np.where(df.col2.isin(samples.Sam),'Yes' + df.col2, 'Non_'+ df.col2) 

Whhich抛出错误的,

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 
+0

对于我来说它的工作原理是什么错误? – jezrael

+1

将'Samples'重命名为'samples'应该有效。 –

+0

'df ['col2'] = np.where(df.col2.isin(samples.Sam),'Yes_'+ df.col2,'no _'+ df.col2)'需要但似乎还有其他问题。 – jezrael

回答

2

您的代码工作得很好,我一旦我改变了“样品”的资本..

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'] 

输出..

0  YesPFD_1 
1 Non_PFD_2 
2 Non_PFD_3 
3 Non_PFD_4 
4  YesPFD_5 
Name: col2, dtype: object 
相关问题