2017-01-03 12 views
0

特定の列と行を持つデータフレームがあり、特定の条件を満たす場合は列の1つから行に接頭辞を追加する必要があります。条件を満たす場合に列の行に接頭辞を追加する方法

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でそれを試してみました、などのエラーがスローされますWhhich

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 
+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 
関連する問題