2017-01-03 4 views
0

У меня есть кадр данных с определенными столбцами и строками и в котором мне нужно добавить префикс к строкам из одного из столбцов, если он соответствует определенному условию,Как добавить префикс в строки столбцов if (условия выполнены)

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 на основе значений в образцах dataframe, и я попытался его 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

Переименование 'Образцы' на' образцы' должно сделать трюк. –

+0

'df ['col2'] = np.where (df.col2.isin (samples.Sam), 'Yes_' + df.col2, 'no _' + df.col2)' need, но кажется, что что-то еще не так , – 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 
Смежные вопросы