2017-11-10 15 views
1

データフレーム列の文字列があります。ここでは、これらの文字列の特定の単語を、置換する単語の意味を持つ別のデータフレームの値に置き換えたいとします。私は現在、iterrrows()を使用しています.25000行で約2分かかります。私はこれを行うより効率的な方法があるかどうかを知りたいと思います。辞書を使用してデータフレーム列内の値を置き換えます。

syn = pd.ExcelFile("C:/Key-Value.xlsx") 
df_syn = syn.parse("Keys") 

for idx, row in df_syn.iterrows(): 
    df['col'] = df['col'].str.replace(r"\b"+row['synonym']+r"\b", row['word']) 

答えて

1

IIUC:

セットアップ

df_syn = pd.DataFrame(dict(synonym=['hug', 'kiss'], word=['warm', 'tender'])) 
df = pd.DataFrame(dict(col=['I want a hug', 'a kiss would be great'])) 

print(df_syn, df, sep='\n\n') 

    synonym word 
0  hug warm 
1 kiss tender 

        col 
0   I want a hug 
1 a kiss would be great 

ソリューション

mapping = df_syn.assign(
    synonym=df_syn.synonym.radd(r'\b').add(r'\b') 
).set_index('synonym').word.to_dict() 

df.replace({'col': mapping}, regex=True) 

         col 
0   I want a warm 
1 a tender would be great 
関連する問題