2016-11-14 29 views
0

2つのデータフレームで文字列値を検索しようとしていますが、私はPandasライブラリを使用しています。Python:データフレーム内の文字列を比較できません

最初のデータフレーム - df_transactions列に「ErrList」

第二のデータフレームをエラー・コードのリストを持っている - df_actionは、一列「CODE」および列「ACTIONに対応するエラーのエラーのリストを有します'

私は以下のようにこれらのデータフレームから2つの文字列を比較しようとしています:

ActionLookup_COL = [] 
ActionLookup = [] 
for index, transactions in df_transactions.iterrows(): 
     errorList = transactions['ErrList'] 
     for index, errorCode in df_action.iterrows(): 
      eCode = errorCode['Code'] 
      eAction = errorCode['Action'] 
      if eCode ==errorList: 
       ActionLookup.append(eAction) 

     ActionLookup_COL.append(ActionLookup) 

df_results['ActionLookup'] = pd.Series(shipmentActionLookup_COL, index=df_results.index) 

私はデータフレームdf_results [「ActionLookup」]を印刷するとき、私は、エラーコードに対応するアクションコードを得ることはありません。これらのデータフレームの文字列を比較するにはどうすればいいですか

ありがとうございました!

答えて

1

IIUCあなたはmerge必要があります。

pd.merge(df_transactions, df_action, left_on='ErrList', right_on='Code') 

サンプル:

df_transactions = pd.DataFrame({'ErrList':['a','af','e','d'], 
           'col':[4,5,6,8]}) 

print (df_transactions) 
    ErrList col 
0  a 4 
1  af 5 
2  e 6 
3  d 8 

df_action = pd.DataFrame({'Code':['a','af','u','m'], 
          'Action':[1,2,3,4]}) 

print (df_action) 
    Action Code 
0  1 a 
1  2 af 
2  3 u 
3  4 m 

df_results = pd.merge(df_transactions, df_action, left_on='ErrList', right_on='Code') 
print (df_results) 
    ErrList col Action Code 
0  a 4  1 a 
1  af 5  2 af 

print (df_results['Action']) 
    ErrList col Action Code 
0  a 4  1 a 
1  af 5  2 af 
関連する問題