2016-03-21 12 views
0

私の入力csvファイルをpandas(df_input)で読み込み、リスト内の変数にre.findallを使用するコードを記述しようとしています。このリストは、別の.csvファイルからインポートされます。列[0](df_expression)にはコードで検索する変数が含まれ、列[1](df_translation)には完全一致が返されるコードが含まれます。こうして、「ブルゴーニュ」や「マルーン」のような色を検索すると、「赤」に変換されます。私はこの設定を試していたので、コード自体を変更することなく、式の翻訳を変更することができます。re.findallで適切な出力が得られません

Name,Color 
a black car,['Black'] 
a white paper,['White'] 
the sky is blue,['Blue'] 
this product is burgundy and black,['Red, Black'] 
just pink,['Pink'] 

優先output.csv:df_input.to_csv(ファイルパス+ファイル名)の後に、私のoutput.csvに見られるような

resultlist 
[['Black'], ['White'], ['Blue'], ['Red', 'Black'], ['Pink'], ..... 

電流出力:

df_name = df_input[0] 

def expression(expr, string): 
    return True if len(re.findall(r'\b' + expr + r'\b', string, re.I)) > 0 else False 

resultlist = [] 
    for lineIndex in range(0, len(df_input)): 
     matches_list = [] 
     for expIndex in range(0, len(df_expressions)): 
      if expression(str(df_expressions.ix[expIndex]), str(df_name.ix[lineIndex])): 
       matches_list.append(df_translation.ix[expIndex]) 

df_input['Color'] = resultlist 

これらは、戻り値であり、 :

Name,Color 
a black car,Black 
a white paper,White 
the sky is blue,Blue 
this product is burgundy and black,Red;Black 
just pink,Pink 

df_input.to_csv(filepath + filename)を実行するたびに大括弧と引用符を失う可能性はありますか? 私はdf.replace()を試しました - うまくいかず、私のre.findallの終わりに[0]が追加されず、他のものもたくさんあります。仕事をしているように見えるのはstr(resultlist).replace()ですが、インデックスとマッチの組み合わせがかなり乱雑です。助言がありますか?

+0

にresultlessを変換する必要があります

df_input['Color'] = [', '.join(c) for c in resultlist] 

df_input['Color'] = resultless 

を交換して実行可能なコードを投稿してください。スニペットだけではありません。 – Saleem

答えて

0

次の変更を試して、動作を確認してください。

これは['Black', 'White', 'Blue', 'Red, Black', 'Pink', ...]

関連する問題